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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top