2009-11-09 10 views
6

Dies sollte das nicht verwirrend sein. Ich habe eine benutzerdefinierte UIView mit einer Reihe von Steuerelementen darauf. UILabels, Buttons usw. Ich habe diese Nib mit dem Interface Builder erstellt. Ich möchte in der Lage sein, diese benutzerdefinierte uiview in einer anderen UIView mit dem Interface Builder zu positionieren.Gewohnheit UIView mit Interface Builder gebaut zugänglich/positionierbar über Interface Builder

Wie verknüpfe ich meine UIView benutzerdefinierte Klasse, an die Spitze? initWithCoder wird aufgerufen, aber ich möchte, dass diese Klasse von der Nib geladen wird.

Dank

+0

Haben Sie eine akzeptable Antwort gefunden? Bitte markieren Sie es, danke. – JoePasq

+0

@JoePasq sehen Sie hier irgendwelche gültigen Antworten? –

+0

ich habe eigentlich nie das funktioniert leider – Nader

Antwort

3

Damit dies funktioniert, müssen Sie ein Plug-in für Interface Builder erstellen, die Ihre Klasse benutzerdefinierte Steuerelement verwendet. Sobald Sie Ihr Plug-In erstellt und installiert haben, können Sie Instanzen Ihrer Ansicht per Drag-and-Drop in ein anderes Fenster oder eine andere Ansicht im Interface Builder einfügen. Weitere Informationen zum Erstellen von IB-Plugins finden Sie unter Interface Builder Plug-In Programming Guide und im Kapitel zum Erstellen eigener IB-Palettensteuerelemente aus Aaron Hillegass 'Buch Cocoa Programming for Mac OS X.

Here ist der Link zum ursprünglichen Autor der angenommenen Antwort auf .

+3

Es stellt sich heraus, dass dies ab XCode 4.0+ nicht mehr unterstützt wird –

0

können Sie fügen ein UIViewController Objekt Interface Builder verwenden und dann die UIViewController ‚s "Nib Name" Eigenschaft festgelegt. Ich weiß nicht, ob das dein Modell durcheinander bringt, aber ich denke, es ist der einzige Weg, um das zu tun, was du versuchst.

+0

Hallo Kenny, danke für die schnelle Antwort. Das habe ich gerade versucht. Ich habe einen UIViewController zu meiner Hauptansicht hinzugefügt, den Namen der Nib-Datei auf die NIB der benutzerdefinierten Unteransicht gesetzt und die View-Eigenschaft des uiviewcontrollers mit der benutzerdefinierten Ansicht in Interface Builder verbunden. Gleiche Sache. Es kommt einfach nicht auf. InitWithCoder wird in der benutzerdefinierten Ansicht aufgerufen, aber nichts wird angezeigt. – Nader

0

In IB bringen wählen Sie die Identität Inspector Tool (Befehl-4) dann Ihre benutzerdefinierte Ansicht und in der Klasse Pop-up den Namen Ihrer benutzerdefinierten Klasse statt Generika UIView wählen. Sie können es auch mit einem Ivar verbinden. Deklarieren Sie in Ihrem ViewController eine Instanz Ihrer benutzerdefinierten Klasse mit einer IBOutlet davor. Gehen Sie dann zurück und rufen Sie den Connections Inspector auf, und verbinden Sie Ihre Ansicht mit dem ivar, indem Sie aus dem Referenzierungsausgang der benutzerdefinierten Ansicht auf den Besitzer der Datei klicken (was eine Instanz Ihres ViewControllers sein sollte) und den Ivar-Namen auswählen.

Wenn Ihr NIB geladen wird, sollte es ein Objekt dieser Art erschaffen und sie auf diese Variable zu verbinden.

Verwandte Themen