0

樣品: 我創建了一個最小的是,這裏強調這一問題的文件:http://uploads.omega.org.uk/Foo3.zipviewDidLoad中不被父母的UITabBarController稱爲

如果viewDidLoad中/ viewInitWithNibName叫,會顯示一個消息框。消息框未顯示,因此,方法未被調用。

詳細信息: 我有一個應用程序試圖使用UITabBarController在多個視圖之間切換。

使用界面構建器將視圖鏈接到UITabBarController(選擇標籤頁,打開屬性(Option-1)並填寫NIB名稱字段),所以不需要額外的代碼即可「自動」顯示,在後面讓他們出現。

這是否意味着像這樣加載的視圖的行爲沒有執行其viewDidLoad方法?如果不是,我怎麼做錯了,我需要改變什麼。

如果預期的行爲,我能想到的一些變通的,但是任何建議表示讚賞:

  1. 廢料的UITabBarController和實現視圖使用initWithNibName切換自己(和添加/插入/推/子視圖)。
  2. 在UITabBarController自己的viewDidLoad方法中手動調用每個孩子的viewDidLoad方法。

非常感謝您提供任何幫助。

回答

1

好的,我已經設法解決這個問題。

將NIB鏈接到TabBarController是不夠的 - 您還需要鏈接代碼beind文件,即使您正確設置了文件所有者,也不會由NIB隱式鏈接。

打開IB,然後選擇相關頁面。點擊中間選擇視圖控制器。輸入子視圖的NIB名稱,然後轉到最後一頁(選項4)。在'class identity'中,輸入子視圖NIB的代碼隱藏文件的名稱。

現在一切都會很好地工作。

我已上載的示例代碼的正確版本:http://uploads.omega.org.uk/Foo3-Correct.zip

0

你沒有在項目中的任何地方實例化ImportedView,所以它不會調用initXXX或viewDidAnything。如果將警報代碼放在 - [FirstViewController viewDidLoad]中,它將按預期啓動。

+0

你是正確的,它沒有被實例化。有沒有辦法讓代碼隱藏類在使用IB連接視圖到視圖控制器時自動實例化,還是我需要在父視圖的子視圖中添加和實例化子視圖? – 2010-03-24 13:31:58