2011-03-21 65 views
0

請幫忙,如果您有任何經驗,我們的時間會越來越厚。爲什麼viewDidAppear/viewWillAppear不會在嵌套結構中調用?

我有這樣的結構。

AppDelegate... 
...Owns a _root ViewController (its view added to window) 
...what owns the _main ViewController (its view added to _root's view) 
...that has a Navigation controller (its view added to _main's view) 
...then different viewControllers travels in this navigation stack. 

但viewDidAppear/viewWillAppear中的方法沒有得到所謂的在最裏面的觀點。我不知道爲什麼。

當我閱讀文檔時,它說「添加到窗口時」。他們是否與Windows一起工作?不要這樣想。我該怎麼辦?爲什麼不調用這些CRUTIAL方法?

+0

希望這有助於http://stackoverflow.com/questions/3560669/viewwillappear-viewdidappear-not-being-called-not-firing – visakh7 2011-03-21 12:39:54

回答

1

框架不允許嵌套視圖控制器。

是的,蘋果公司做到了這一點(例如,讓你將一個UIViewControllers嵌入到標籤頁/導航視圖控制器中),但是他們會知道如何去做。

通過從外部視圖控制器向內部視圖控制器轉發正確的消息仍然是可能的,但它需要非常小心,並且可能不是很有前途。不過這次可能會救你!即如果你在你的_root中看到了一個viewWillAppear,那麼將它轉發給它的子視圖控制器等等。如果你設法正確地對所有的外觀/消失,旋轉,內存管理進行操作,那麼你就很好。

兩年過去了,現在支持嵌套視圖控制器:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html#//apple_ref/doc/uid/TP40007457-CH18-SW6

+0

我明白了。所以我的桌面viewController也是錯誤的設計?它是一個擁有許多_thumbnailGroup viewController的viewController,它有許多_thumbnailStack viewController具有許多小_thumbnail viewController。所以所有的內部對象應該是簡單的UIView子類? – Geri 2011-03-21 14:04:21

+0

感謝!我刪除了_root viewController,所有的邏輯都到了_main viewController,所以現在調用了subControllers的委託方法。 – Geri 2011-03-21 14:33:42

+0

是的,UIView在一個由視圖控制器管理的UIView中通常會這樣做。不幸的是,有時候你會需要一點,這是麻煩開始的時候。祝你好運,重新設計。 – 2011-03-21 15:34:42