Frage

Wie bewege ich mich mehr und mehr meines UI Bau von XCode dort zu IB ist eine weitere Hürde ich löschen müssen.

Derzeit erstelle ich meinen benutzerdefinierten Viewcontrollers in XCode mit benutzerdefinierten initializers. Sie haben in der Regel ein Bündel von Ivars, die während der Initialisierung über geben params eingestellt sind. Ich würde wirklich so viel davon, wie ich kann IB bewegen möge.

Könnte jemand mir genau erklären - oder, besser, zeigen Sie mir Code - wie die XCode Ansatz zur Replikation von geben params über benutzerdefinierte initializer in IB -. Vermutlich über IBOutlet

Vielen Dank im Voraus.

Cheers, Doug

UPDATE:

Ein typisches scenerio ist mein AppDelegate zum Netz gehen wird, einige Daten greifen - NSMutableData, und dann einen Verweis auf eine Wurzel Viewcontroller übergeben - in der Regel eine Tableviewcontroller -., Dass auf dem Viewcontroller Stapel eines Navigation gedrückt wird

Wenn eine Zelle ein secondViewController ausgewählt wird alloc / init'ed und eine Teilmenge der Daten an sie übergeben. Die secondViewController geht an das Netzwerk für ein bisschen mehr Daten, baut eine Ansichtshierarchie, Hände Bits der abgerufenen Daten an jedem subview und dann wird jede Unteransicht mit setNeedsDisplay messaged die Daten zu verarbeiten.

Es ist diese hierarchische Datenweitergabe, die ich zu IB zu übergeben will, ist möglich.

War es hilfreich?

Lösung

Sie können nach wie vor eine benutzerdefinierte initializer haben. innerhalb dieses initialisiert Allerdings werden rufen Sie -[initWithNibName:@"yourNibName" bundle:bundle]. Sie werden Ihre UIKit bezogenen Instanzvariablen (UILabel, UIButton, etc.) im Interface Builder verbinden und wird daher nicht die Objekte in Ihrem initializer instanziiert müssen. Andere Instanzvariablen (Strings, Wörterbücher, benutzerdefinierte Objekte, etc.) Sie instanziiert und stellen Sie in Ihrem initializer.

Auch im Auge behalten, dass die Manipulation Ihres UIKit bezogenen Variablen wie Beschriftungstext einstellen, oder die Position eines UIView Einstellung sollten in der viewDidLoad Methode durchgeführt werden, da können diese Objekte nicht vollständig an der Zeit erstellt wurden initializer ist ausgeführt wird.

Lassen Sie mich wissen, wenn Sie mehr Informationen benötigen.

Andere Tipps

Lassen Sie uns sagen wir MyViewController haben die UIViewController und MyViewControllerParameter erstreckt, die eine unserer benutzerdefinierten Objekte, die wir in MyViewController bei der Initialisierung übergeben. MyViewController hat eine IBOutlets vom Typ MyViewControllerParameter darin definiert. Wir wollen MyViewController in einer anderen enthalten Ansicht setzen, ParentView.xib. ParentView.xib wird von ParentViewController.m Besitz und an anderer Stelle geschaffen. Wir verdoppeln ParentView.xib in XCode klicken Interface Builder zu starten. Wir haben dann ein „Objekt“ aus der Bibliotheksansicht ziehen (ich glaube, Sie die Bibliotheksansicht öffnen mit Cmd + Shift + L, wenn die nicht standardmäßig geöffnet) auf das Dokumentfenster. (Dies ist das Fenster von Cmd aktiviert + 0).

Ein „Objekt“ ist ein beliebige Widget in der Bibliothek gefunden (von einem massiven Gold Würfel-Symbol gekennzeichnet), die alles in Ihrem Projekt darstellen kann. Nachdem wir das neue Objekt in das Dokumentfenster platziert haben, geben wir Cmd + 4 das Indentity Inspektor-Fenster zu öffnen. Im oberen Textfeld können wir den Namen unseres View-Controller-Parameter „MyViewControllerParameter“ eingeben. Als nächstes finden wir den Viewcontroller-Widget in der Bibliothek und in das Dokumentfenster fallen. Wir öffnen das Attribut Inspektor (Cmd + 1) und stellen Sie die Feder Namen „MyView.xib“. Dies sollte dazu führen, Cocoatouch die Definitionen in „MyView.xib“ zu laden MyViewController verwenden.

Öffnen Sie die Identität Inspektor und legen Sie den Klassenattribut zu MyViewController. Zuletzt wir klicken oder Steuertaste (oder zwei Finger tippen, wenn wir richtig mit dem Trackpad auf unserer MacbookPro konfiguriert haben) rechts MyViewController im Dokumentfenster. Das öffnet ein Fenster mit allen von IBOutlets in MyViewController zeigt. Ziehen Sie eine Linie von dem kleinen offenen Kreis neben der MyViewControllerParameter Steckdose und legen Sie es auf dem MyViewControllerParameter Objekt sitzt im Dokumentfenster. Das Verbinden dieser Punkte ist, wie Sie Parameter zwischen Objekten einstellen Interface Builder verwenden.

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