2010-10-17 40 views
5

我有一個視圖控制器,增加了其他子視圖已經子類uiviewControllersViewDidAppear/viewWillAppear中沒有被調用

所以它是這樣的:

mainViewController 
     | 
    v---------v 
subVC1 subVC2 

而且,無論subVC1或subVC2有viewDidAppear/viewWillAppear中開火他們? 主視圖控制器在應用程序委託中創建,並將其視圖添加到窗口中。

這裏是一個xcode項目,以顯示我的問題:http://www.qfpost.com/download.do?get=92f03538907e72665ea794d98ff8392b

回答

5

我看了一下你的代碼。 所以問題是viewWillAppear/viewDidAppear在視圖被添加到窗口時被調用,而不是其子視圖中的一個。 您可能想使用viewDidLoad。

+0

真的,我從來沒有這樣做過嗎? – 2010-10-18 06:43:03

+0

在您的示例中,您將subVC2的視圖添加到mainViewController的視圖中。這不會調用viewDidAppear,因爲當您將它添加到應用程序的「窗口」對象時,會調用此方法。在你的例子中你犯了另外兩個錯誤:你用「init」方法初始化你的subVC2。我認爲你想使用你在筆尖建立的那個。你需要使用initWithNibName:bundle:方法。最後一件事,當你添加子視圖時,你可能想要釋放subVC2,因爲你沒有對它進行任何引用。 – Julien 2010-10-18 09:29:41

+0

哦,我不是故意使用一個筆尖,但我不應該釋放subVC2,因爲我只將subvc2的視圖傳遞給addsubview方法而不是整個viewcontroller?這也是關於iPhone上的VW/DA的,因爲我發誓這件事以前沒有發生過。 – 2010-10-18 16:42:13

1

首先,你確定你真正需要做你與UIViewControllers的這個層次做什麼?爲什麼您的MainViewController無法處理您的subVC1subVC2負責的視圖?

其次,當您編寫代碼從您的MainViewController調用它們時,您的viewWillAppear/viewDidAppear將被調用。如果不瞭解設計的其他內容,就不可能告訴你何時應該調用它們,但是如果在「主」視圖可見時子控制器的視圖始終可見,那麼調用它們可能是有意義的從你的mainViewController的viewWillAppear/viewDidAppear方法。