Hab Geduld mit mir, ich lerne immer noch Cocoa Touch. Other -viewDidLoad nicht angerufene Frage hat nichts mit meinem Problem zu tun, ich habe gesucht.
Ich habe FooViewController
, eine UIViewController
Unterklasse. In FooViewController.xib ist der Besitzer der Datei auf FooViewController eingestellt. Außerdem habe ich Main
, dessen App-Delegierter MyApplication
ist und dessen Eigentümer der Datei UIApplication
ist. Meine primäre Spitze ist auf Main eingestellt.
Ich bin in der Lage, die Ansicht auf dem Bildschirm erscheinen zu lassen, indem ich diesen Fluss verwende (der Code wurde kurz geschnitten):
%Vor% Diese Nachricht wird jedoch nicht an FooViewController
:
Totale Stille in gdbs Ausgabe.
Ich habe andere Cocoa-Tutorials gesehen, die Instanzen und ähnliches in IBs Dokumentenansicht zeigen, aber ich sehe diese Optionen nicht in meinen. Soll ich fooViewController im Nib instanziieren? Habe ich eine Verbindung verpasst? In FooViewController.xib ist die Eigentümeransicht des Dateiservers mit der Ansicht in der Nib verbunden.
Ich bin sicher, das ist eine einfache Lösung, und ich bin den falschen Weg gegangen. Half!
Ich habe keine Dokumentation gefunden, um das Folgende zu sichern, aber das habe ich durch experience / experience abgeleitet:
Die viewDidLoad
-Methode wird unmittelbar nach dem Aufruf von loadView
aufgerufen, und es ist an wen auch immer loadView
gerichtet ist, um den zusätzlichen Aufruf an viewDidLoad
zu liefern.
In einigen Fällen wird das SDK dieses Verhalten für Sie behandeln. Angenommen, Sie haben eine Unterklasse von UIViewController
namens MyViewController
; dann:
myViewController.view
zugreifen, bevor Sie loadView
aufrufen, ist der Superklassen-Accessor intelligent genug, um loadView
für Sie und viewDidLoad
unmittelbar danach aufzurufen. Wenn Ihr Code wie folgt aussieht:
%Vor% Dann werden sowohl loadView
als auch viewDidLoad
in Ihrem Namen aufgerufen.
Wenn Ihr Code jedoch so aussieht:
%Vor% Dann kann der% code_de% Getter sehen, dass Sie die Ansicht bereits geladen haben, und Sie gehen davon aus, dass Sie auch view
aufgerufen haben - also auch nicht. Ironischerweise verhindert der zusätzliche Funktionsaufruf, dass viewDidLoad
aufgerufen wird.
Ich hatte das gleiche Problem zweimal. Beim ersten Mal habe ich vergessen, die Ansicht von UITableViewController mit dem eigentlichen UITableView im Interface Builder zu verbinden. Beim zweiten Mal habe ich vergessen, awakeFromNib
selbst in der Oberklasse aufzurufen.
Und ich habe meine eigene Frage beantwortet, damit dies zukünftigen Leuten helfen kann. Da ich sehe, dass ViewDidLoad, wie seine drei Top-Googles in meinem Vorschlag, "ViewDidLoad nicht aufgerufen", "ViewDidLoad nicht aufgerufen wird" und "ViewDidLoad nicht feuern", stelle ich mir vor, dies ist ein üblicher Fehler ...
Ändern:
%Vor%An:
%Vor%Das Problem wurde behoben. Offensichtlich ein Fehler bei der Verwendung von Cocoa.
Tags und Links objective-c iphone cocoa-touch