initWithNibName VS viewDidLoad

8

Ich habe stundenlang versucht, zu verstehen, wann ich den viewDidload verwenden soll: und wann ich initWithNibName verwenden soll: um die Eigenschaften meines viewControllers einzurichten.

Ich verwende zum Beispiel einen TableViewController und setze alle seine Eigenschaften (wie backgroundColor, se- parateColor, die Toolbar-Elemente) in initWithNibName. Es ist der richtige Weg zu tun?

Wenn jemand mich aufklären könnte.

Danke

    
Titouan de Bailleul 04.01.2012, 23:05
quelle

3 Antworten

12

Sie sollten Ihre Eigenschaften in viewDidLoad einrichten. Diese Methode wird vom System aufgerufen, wenn die Ansicht des Controllers in den Speicher geladen wird. Das initWithNibName: ist etwas, das Sie aufrufen, wenn Sie eine Controller-Instanz aus einer NIB-Datei erstellen.

Das heißt, wenn Sie Ihre Eigenschaften in initWithNibName: einrichten und stattdessen init aufrufen, ist Ihr Controller möglicherweise nicht in einem guten Zustand. Daher ist es am besten in viewDidLoad .

    
Jeremy 04.01.2012, 23:13
quelle
3

Sie sollten viewDidLoad: Methode Ihres Controllers verwenden. Um aus der Dokumentation von Apple auf initWithNib zu zitieren:

  

Die von Ihnen angegebene Nib-Datei wird nicht sofort geladen. Es wird geladen, wenn auf die View-Controller-Ansicht zum ersten Mal zugegriffen wird. Wenn Sie nach dem Laden der NIB-Datei eine zusätzliche Initialisierung durchführen möchten, überschreiben Sie die Methode viewDidLoad und führen Sie Ihre Aufgaben dort aus.

    
Ryan Crews 04.01.2012 23:14
quelle
3

initWithNibName: wird aufgerufen, wenn die NIB geladen und instanziiert wird.

viewDidLoad: wird aufgerufen, wenn Ihre Ansicht tatsächlich auf dem Bildschirm angezeigt wird.

Und ja - ich glaube, dass in Ihrem Fall die Einstellung von Farben und dergleichen am besten in initWithNibName

erfolgt     
Fletch 04.01.2012 23:14
quelle

Tags und Links