Initialisieren Sie eine Ansicht mit einem xib
Ich initialisieren möchten, eine Ansicht mit einer xib. Das ist ein UIView. Also ich habe eine xib-und eine UIView-Unterklasse, mit der init-code eingefügt, der unten initWitFrame nibName). Ich füttere die xib-name der init-code aus einer view-controller bei der Erstellung der Ansicht.
SubclassUIView *view = [[SubclassUIView alloc]initWithFrame:self.view.bounds nibName:@"xibName"];
Bin ich auf dem richtigen Weg? So weit der Inhalt der xib-keine Last mit der Ansicht.
Durch die Art und Weise der main-view in der xib-ist die Klasse der Typ von meinem UIView-Unterklasse.
- (id)initWithFrame:(CGRect)frame nibName:(NSString*)nibName
{
self = [super initWithFrame:frame];
if (self)
{
[[NSBundle mainBundle] loadNibNamed:nibName owner:self options:nil];
[self addSubview:self.view];
}
return self;
}
InformationsquelleAutor Mrwolfy | 2013-02-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was ist zurückgekehrt aus dem NSBundle ist ein NSArray (von visuellen Kontrollen, vor allem UIViews). Appart aus, dass der code richtig erscheint. Haben Sie einen Blick auf ein funktionierendes Beispiel:
InformationsquelleAutor Mike M
@Mike M:
Dieses Verhalten kann dazu führen, dass zufällige Abstürze. Manchmal ein NSApplication-Objekt werden die firstObject -> Absturz
Apple-docs:
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html
"Die Reihenfolge, in der die nib-be-code ruft die awakeFromNib Methoden der Objekte ist nicht gewährleistet. In OS X, Cocoa versucht zu rufen, der awakeFromNib-Methode der File ' s Owner im letzten aber nicht garantieren, dass Verhalten. Wenn Sie brauchen, um zu konfigurieren Sie die Objekte in Ihre nib-Datei weiter an der Last der Zeit, die am besten geeignete Zeit, dies zu tun ist, nachdem Sie Ihre nib-be-Aufruf zurückgegeben. An diesem Punkt werden alle Objekte erzeugt, initialisiert und betriebsbereit."
InformationsquelleAutor Péter Kovács