Laden UIView von xib, Abstürze beim Zugriff auf IBOutlet
Habe ich eine xib-Datei mit einem kleinen UIView
auf dem wiederum enthält einige Beschriftungen. Nun, ich bin versucht zu laden, die UIView
in eine bestehende UIViewController
, und ändern Sie die label-Texte. Der Grund, ich will es auf diese Weise, ist, dass die UIView
wiederverwendet wird mit verschiedenen label-Texte, so dachte ich, machen eine benutzerdefinierte Klasse und laden Sie es von einem xib wäre der beste Weg zu gehen.
Ich habe versucht, mehrere Möglichkeiten zu laden und ich habe erfolgreich angezeigt, es auf meiner viewcontroller. Das problem ist, sobald ich versuche, tatsächlich eine Verknüpfung mit einem IBOutlet
im Interface Builder, und darauf zugreifen, meine app abstürzt.
Habe ich eine benutzerdefinierte UIView
Klasse, die wie folgt aussieht:
CoverPanel.h
@interface CoverPanel : UIView {
IBOutlet UILabel *headline;
}
@property (nonatomic, retain) IBOutlet UILabel *headline;
@end
CoverPanel.m
@implementation CoverPanel
@synthesize headline;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
//Initialization code.
//
self = [[[NSBundle mainBundle] loadNibNamed:@"CoverPanel" owner:self options:nil] objectAtIndex:0];
}
return self;
}
In der CoverPanel.xib
ich verlinkt haben UILabel
auf die Schlagzeile Steckdose.
In meiner viewcontroller, hier ist, wie erstelle ich das CoverPanel
Instanz, und das ist, wo es kracht:
CoverPanel *panelView = [[CoverPanel alloc] initWithFrame:CGRectMake(0,0,300,100)];
So weit, So gut. Es zeigt die UIView
genau so, wie Sie layed out in den .xib.
Aber sobald ich versuche es zu ändern die headline.text
etwa so:
panelView.headline.text = @"Test";
stürzt es ab mit dieser Fehlermeldung:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView headline]: unrecognized selector geschickt Instanz 0x5c22b00'
Könnte es etwas winzig und ich bin mit Blick auf, aber es wurde driving me insane für Stunden und Stunden so weit. Hat jemand eine Idee?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie zugewiesen Ihre benutzerdefinierte view-Klasse zu der Ansicht, die lebte in Ihrem xib. Sie brauchen nicht zu tun, weil dann das, was Sie zurück bekam, war der Blick aus dem xib-und Sie haben gerade zugespielt Ihre CoverPanel. So, ersetzen Sie einfach Ihre Initialisierer: