2009-01-29 1 views
20

Ich habe Tableiste Controller mit Interface-Builder eingerichtet, und jede Tableiste Element ist mit einem View-Controller (4 Registerkarten, 4 View-Controller) verknüpft. Ich möchte wissen, ob Interface Builder verwendet eine -init Methode, um die View-Controller initialisiert werden, da anscheinend diese Methode nicht aufgerufen bekommt:Verwendet der Interface Builder die -init-Methode zum Initialisieren von View-Controllern?

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil; 

... und ich möchte einige Initialisierungen tun. Ich kann das nicht zu -viewDidLoad hinzufügen, da es im Falle einer Speicherwarnung aufgerufen wird. Irgendeine Idee?

Antwort

47

Objekte aus einem *.(nib|xib) geladen werden inited mit:

- (id)initWithCoder:(NSCoder *)inCoder; 

außer Kraft setzen Sie können also das, oder das Setup nach -initWithCoder: wenn tun genannt wird, ist kein Problem, das Sie verwenden:

- (void)awakeFromNib; 

aus dem NSNibAwaking-Protokoll.

10

Ich würde auch vs awakeFromNib erwähnen.

Im Allgemeinen überschreibe ichbeim Zuweisen von Speicher für das Objekt oder Einstellen von Werten. Wenn Sie einige Einstellungen vornehmen müssen, nachdem die IBOutlets verbunden sind, überschreiben Sie awakeFromNib. Bis dahin sind IBOutlet-Instanzvariablen für andere Ansichten und Steuerelemente nicht verbunden.

Verwandte Themen