2011-08-18 46 views
3

我跟着這個UITabBarController Tutorial創建一個標籤欄與主要使用Interface Builder的相應子視圖。 UITabBarController在那裏創建,Tab的視圖控制器也被添加到那裏。UITabBarController子視圖文件的所有者

我正確的創建UIViewControllers {WelcomeViewController | AboutViewController}。{h | m}是不必要的嗎?

誰是real文件的所有者 Subviews {WelcomeViewController | AboutViewController} .xib?

請注意,我起初試圖在WelcomeViewController.h中創建一個IBAction方法:在WelcomeViewController.xib的Interface Builder中,我可以將按鈕按鈕連接到它出現在文件所有者處的那個操作。但是在運行時它崩潰了,因爲真正的文件所有者可能是而不是 WelcomeViewController.m的對象。我在這裏嗎? IBAction是否出現在界面生成器(這裏是Xcode 4)?

最後一個問題:當我在Interface Builder中像教程中那樣連接所有東西時,我還能如何/分離代碼(在WelcomeViewController.h中只有在該子視圖中發生的IBActions)?

回答

4

我是否正確創建UIViewControllers {WelcomeViewController | AboutViewController}。{h | m}是不必要的?

不,兩個控制器都是必需的,因爲每個全屏窗口至少應該有一個ViewController(並且最好至多)一個ViewController來管理您的視圖層次結構。 TabBarController只是一種管理所加載的子控制器顯示的「啞」元控制器,因此您需要控制器來切換視圖。我會建議你閱讀this part of the Apple doc

誰是子視圖的真正文件所有者{WelcomeViewController | AboutViewController} .xib?

文件的所有者應該是相應的控制器類(在你的情況,{WelcomeViewController | AboutViewController} {H | M}。) - 當選擇文件的所有者可以在檢查調色板設置類在Interface Builder 。只有在應用程序啓動時打開的第一個窗口(通常稱爲Main.xib左右)應該將應用程序委託作爲文件的所有者。文件的所有者擁有XIB/NIB文件的對象 - 對象引用明智,你知道我的意思:)我認爲它應該也可以加載與其他控制器的XIB/NIB文件(和其他控制器自動成爲文件所有者),但我不確定。

...我在這裏嗎? IBAction是否出現在界面生成器(這裏是Xcode 4)?

這可能是你在Interface Builder中以錯誤的方式連接了一個常見的錯誤。嘗試按住Ctrl鍵,然後將一行從按鈕拖到文件所有者上,然後選擇所需的鏈接方法。這應該做到這一點。

最後一個問題:當我像在教程中一樣在Interface Builder中連接所有東西時,我仍然可以將代碼(在WelcomeViewController.h中有IBActions,僅在此子視圖中發生的操作)分離出來?

我想我在第一段回答了這個問題 - WelcomeViewController仍然存在,你所要做的就是創建IBOutlets並在IB中連接它們。當然,您也可以通過編程方式進行接線,因爲會員「視圖」會自動填充(通過文件所有者連接),並且可以從那裏訪問所有子視圖。

+0

好的,我想我忘了在身份選項卡中設置課程 - 下次必須嘗試。所以,基本上,直到現在一個類'UIViewController'的新對象被實例化了,而不是'WelcomeViewController'或'AboutViewController',對吧? – fabb

+0

是的,或者它甚至可能是「NSObject」類型。 – manmal

+0

好吧,它現在可以工作,能夠閱讀是一個保佑...謝謝! – fabb