Wie eine benutzerdefinierte UIView schaffen?
-
26-09-2019 - |
Frage
Ich habe eine UIView-Unterklasse und entsprechende xib Datei erstellt, in dem ich einige UILabels und UIImageViews angelegt habe. Ich möchte dann mehrere Kopien dieses benutzerdefinierten UIView in eine UIViewController setzen.
Als ich tun, dass sie leer in Interface Builder angezeigt und erscheinen nicht, wenn die App geladen wird. Welche Methoden kann ich auf der UIView Unterklasse implementieren müssen diese Arbeit machen?
Lösung
Die einfachste Methode ist bei weitem eine Spitze mit Datei-Besitzer Satz NSObject zu erstellen, die eine Ansicht Ihres Layout-Element enthält.
Dann
NSArray *arr = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:nil options:nil];
UIView *fv = [[arr objectAtIndex:0] retain];
// now you have the view, do something with it:
fv.center = CGPointMake(100,100);
[self.view addSubview:fv];
Keine Notwendigkeit, etwas zu tun mit der Besitzer der Datei; es wird auch hier auf Null gesetzt.
Andere Tipps
Dies ist ähnlich wie mit einer Feder Datei Tabellenansicht Zellen zu erstellen. hier ist eine Seite, die erläutert, wie das zu tun.
Sie müssen eine Steckdose in Ihrer UIViewController
Unterklasse für die benutzerdefinierte Ansicht setzen, und stellen Sie die UIViewController
Unterklasse als „Datei-Besitzer“ in der benutzerdefinierten Ansicht nib (.xib) Datei. Dann schließen Sie den Ausgang Sie auf das Top-Level-Ansicht Objekt erstellt (wieder in der benutzerdefinierten Ansicht nib-Datei).
Dann wird jedes Mal, wenn Sie möchten, dass Ihre benutzerdefinierte Ansicht in Ihrem View-Controller-Code instanziiert, Aufruf:
[[NSBundle mainBundle] loadNibNamed:<custom view nib name> owner:self options:nil];
Der Auslass Sie werden dann zu Punkt auf eine neue Instanz der benutzerdefinierten Ansicht eingestellt werden.
Der einzige Nachteil an diesem Ansatz ist, dass Sie die Instanzen der benutzerdefinierten Ansicht in Ihrem View-Controller-Layout muss programmatisch statt grafisch in Interface Builder.
Ein weiterer Ansatz wäre die Put-Etiketten und Bilder programmatisch in Ihrer UIView
Unterklasse erstellen, und dann können Sie es in den Interface Builder wie würden Sie jede andere UIView
Unterklasse.
Bearbeiten :. Leider gibt es in Xcode 4.0, diese Fähigkeit wurde entfernt
Wenn Sie Ihre Subview in Interface Builder konfiguriert haben, können Sie eine neue Gruppe erstellen (verwenden Sie die Rädchen Schaltfläche am unteren Rand des Bibliotheksfenster) und ziehen Sie die Unterklasse-Objekt aus der Listenansicht (Ihre Bilder und Etiketten enthalten) (dh nicht die Layout-Ansicht) zurück in die Bibliothek Fenster.
Sie können dann grafisch mehrere Instanzen Ihrer Ansicht nach Unterklasse zu jedem Interface Builder-Ansicht oder Fenster hinzufügen, wie Sie es mit der integrierten Objekte in der Bibliothek.