Frage

Meine TabBarController-basierte Anwendung verfügt über mehrere Registerkarten. Jedes Zimmer verfügt über eine benutzerdefinierte Viewcontroller Klasse, der einzige Unterschied die Art und Weise ist die Instanz initialisiert wird. Gibt es eine Möglichkeit Interface Builder senden die verschiedenen Registerkarten benutzerdefinierte Init Parameter?

zu machen

Zur Zeit mache ich die Initialisierung in viewWillAppear, aber für eine Reihe von Gründen wäre es sinnvoll, sie in IB zu tun machen, anstatt im Code.

Irgendwelche Vorschläge?

Danke, Kelso

War es hilfreich?

Lösung

Interface Builder erstellt ein Archiv von Objekten, die aus dem Archiv entfernt ist, wenn man ausführt programmieren. Man kann nicht wirklich sagen, IB bestimmte Methoden zu nennen.

Wenn Sie initialisieren, bevor viewWillAppear: aufgerufen wird, können Sie dies in awakeFromNib, die garantiert wird aufgerufen werden, nachdem alle Objekte geladen wurden und alle Ausgänge haben, um ihre Ziele verbunden sind.

Wenn Sie früher tun wollen Initialisierung selbst, können Sie dies tun, indem initWithCoder: überschrieben (siehe NSCoding Protokoll zur Dokumentation). Ich weiß nicht, ob es irgendwo dokumentiert ist, aber das ist die für Objekte aus einem Archiv decodiert initialisiert bezeichnet werden.

In allen oben genannten, werden Sie nicht in der Lage sein, Parameter zu empfangen, aber im Code sollten Sie in der Lage sein, den Zugriff auf alles, was Sie mit einigem gezielten Einsatz von globalen Variablen müssen. Sie können auch [[UIApplication sharedApplication] delegate] verwenden, um Zugriff auf Ihre Anwendung Delegatobjekt zu erhalten.

Andere Tipps

Ich glaube nicht, dass es irgendeine Art und Weise zu ändern, welche Methoden von der IB-Laufzeit aufgerufen werden, wenn Ihre Spitze geladen wird. Wenn Sie beschrieben, was Sie erreichen wollten (das heißt, warum tun Sie das Setup in viewDidAppear nicht für Sie arbeiten), könnten Sie einen Vorschlag, einen besseren Weg, um Ihre Initialisierung zu behandeln.

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