2009-07-10 8 views
1

Lädt die addSubview-Methode tatsächlich die Ansicht in die Anwendung oder nicht? Der Grund, den ich stelle, ist, weil ich zwei Ansichten in meiner Bewerbung habe. Der Anwendungsdelegate fügt die zwei Ansichten als Unteransichten hinzu und bringt dann eine der Ansichten nach vorne. Jetzt habe ich eine print-Anweisung in jeder der viewDidLoad-Methoden für jede Ansicht. Wenn ich die Anwendung ausführe, lädt der Anwendungsdelegate die Ansichten als Unteransicht. Wenn die einzelnen Ansichten geladen sind, sehe ich tatsächlich, dass die Konsole die Anweisungen ausgibt, die ich in jeder der viewDidLoad-Methoden platziert habe. Soll das so sein?UIWindow und UIView addSubview Frage

Antwort

5

viewDidLoad ist eigentlich eine Methode von UIViewController, nicht UIView. Es wird aufgerufen, nachdem die Ansicht in den Speicher geladen wurde (nach Ihrer init-Methode, aber vor wakeFromNib). Sie werden feststellen, dass addSubview: eine UIView als Parameter verwendet, sodass die Ansicht geladen sein muss, damit die Ansicht einer anderen Ansicht hinzugefügt werden kann. Andernfalls würden Sie versuchen, eine imaginäre Ansicht hinzuzufügen.

Als Antwort auf Ihre Frage, ja soll es das tun. viewDidLoad wird lange vor dem Hinzufügen von Subview aufgerufen. Wenn Sie die addSubview: -Zeilen entfernen, werden Sie feststellen, dass sie immer noch aufgerufen werden (weil Sie den Controller der Ansicht erstellen).

+1

Also, wenn ich 10 Ansichten habe ... werden alle 10 geladen? Was ist passiert? Laden Sie nur Ansichten nach Bedarf? Also "Hinzufügen" einer Unteransicht zu einem Fenster ... ist wirklich nur "Show it"? Wo ist Code, der tatsächlich thye * LOAD * diese Ansicht tut? – Bonnie

0

Mein Verständnis ist, dass Ansichten faul geladen sind. Wenn Ihr Viewcontroller 10 Ansichten hat, werden sie nicht alle geladen, bis Sie tatsächlich versuchen, auf sie zuzugreifen.