Laden Sie benutzerdefinierte UIView mit XIB aus einem View Controller view mit IB
Habe ich eine benutzerdefinierte UIView
(MyCustomUIView
) der Verwendung von Interface Builder. Ich würde gerne diese benutzerdefinierte Ansicht im MyViewController
's Ansicht, die soll auch mit IB. Ich habe eine UIView
als eine Untersicht in MyViewController
's XIB und legen Sie es Klasse MyCustomUIView
. Das problem ist, wenn ich den code ausführen, wird nur eine leere Ansicht wird angezeigt. (Wenn ich das instanziieren MyCustomUIView
im code zeigt es auch.)
Ich bin nur überschreiben der initWithFrame:
- Methode der folgenden Art und Weise, in MyCustomUIView.m
:
- (id)initWithFrame:(CGRect)frame
{
[[NSBundle mainBundle] loadNibNamed:@"MyCustomUIView" owner:self options:nil];
self = self.view;
return self;
}
Was soll ich tun, damit die Ansicht korrekt geladen? Wie sollte initWithCoder:
Aussehen?
InformationsquelleAutor Daniel | 2012-11-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie richtig. IB nutzt initWithCoder. initWithCoder sollte sehen sehr ähnlich wie Ihre anderen init-Methoden:
Einmal weisen Sie Ihre Klasse in IB, brauchen Sie sich nicht zu instanziieren Sie es aus dem bundle, es sei denn, ich bin Missverständnis Ihren Absicht.
Sie müssen nur die Klasse uiview-Objekt in der IB und es sollte ihn abholen. Das erste, was Sie tun müssen, ist zu bestimmen, ob Ihre anzeigen tatsächlich erscheinen. Erstellen Sie eine schwache Referenz in Ihrer view-controller, öffnen Sie die app, und die Ausgabe der Beschreibung. Wenn es noch ein einfaches, altes UIView, dann überprüfen Sie Ihre nib (oder storyboard), zu überprüfen, wird der name der Klasse im Bereich "Informationen", dann speichern Sie die Datei für die kichert.
Wenn Sie nicht mit initWithCoder, dann löschen Sie es aus Ihrer Sicht Klasse. Sie brauchen nicht zu rufen loadNibNamed. IB kümmert sich für Sie.
Können Sie einen kurzen Blick, wenn lade ich mal ein basic-demo-Projekt? Nach dem Lesen Ihre Kommentare, ich bin mir noch nicht sicher, was ich falsch mache!
k ... ich habe das Problem gelöst für Sie. Sie waren auf dem richtigen Weg. Ich wusste nicht, Sie wurden auf andere Federn. Die eigentliche Antwort kann hier gefunden werden: stackoverflow.com/questions/3944964/... ... fühlen Sie sich frei, um die aktuellen Beispiel-Projekt hier: aworldonfire.com/TestProjectUpdated.zip viel Glück!
InformationsquelleAutor Brian Douglas Moakley
Nicht alles, was in der view-Teil der view-controller im IB. Wählen Sie stattdessen den nib-Namen für den view-controller im IB, um den Namen der nib-mit der Ansicht. In der Feder mit der Ansicht der Besitzer der Datei auf die view-controller-Klasse und hook up Ihrer
view
- Eigenschaft in der Ansicht.Das Ergebnis wird sein, dass, wenn der view-controller instanziiert wird, wenn es instanziiert wird, aus der Feder (was haben Sie nicht bewiesen ist, was wirklich passieren wird, aber lasst uns einfach sagen, es ist), es finden die Feder und laden Sie die Ansicht aus.
Grundsätzlich die Regel ist, dass es keinen Unterschied macht, wo ein view-controller kommt, es wird gehen durch die gleichen Schritte auf der Suche nach Ihrer Ansicht in der gleichen Reihenfolge, wie erkläre ich in meinem Buch:
http://www.apeth.com/iOSBook/ch19.html#_view_controller_and_view_creation
und in dieser webcast:
http://www.youtube.com/watch?v=zIufcKpDIRo
InformationsquelleAutor matt