2011-11-14 26 views
23

在iOS5中使用故事板功能我想創建一個嵌入了2 ViewControllers的自定義容器。例如,在一個ViewController中嵌入表格視圖控制器以及視圖控制器。如何在iOS 5中使用故事板創建自定義視圖控制器容器

即,一個視圖控制器將有2個關係:

  1. 到表視圖控制器
  2. 以查看控制器繼而將在它4 UIImage視圖或UIButton

是創建這種類型的關係可能使用故事板的拖放功能只有&不是以編程方式?

+0

我的例子遇到了問題。 CustomViewController viewDidLoad事件永遠不會被觸發......這是正常的嗎?有沒有辦法解決這個問題?否則,這是一個非常好的職位!謝謝。 –

回答

14

,你應該只有一個視圖控制器來控制場景。但是,這個viewController可能有兩個其他視圖控制器,它們控制場景中的特定子視圖。要做到這一點,你可以在你的場景viewController中創建屬性,在你的情況下爲你的tableViewController創建屬性,爲你的視圖創建一個屬性。我喜歡把東西放在一起,所以我製作了這兩個viewControllers插座並在界面構建器中創建它們。要在界面構建器中創建它們,請從對象庫中提取一個對象,並將其類型設置爲相關的viewController。將它連接到剛剛在場景的viewController中創建的適當插座 - 注意:這非常重要,否則如果使用ARC並導致應用程序崩潰,viewController將被釋放。然後將這些viewControllers掛接到您希望它們控制的視圖上,然後完成。

另外,你可以在你的場景中實例化和跳出你的viewController viewController,如果你喜歡這樣做。

希望這會有所幫助。

編輯:在反思這不是一個好主意,實際上違背HIG你應該只維護一個ViewController爲每個屏幕的內容,而是嘗試創建一個合適的視圖類,並有單個視圖控制器處理交互各種觀點之間。

+3

我們可以爲視圖創建插座,但是如何在故事板中創建viewController插座? – Sayali

+2

打開界面構建器並選擇你的故事板。在右下角,您會看到對象庫(將視圖控制器和視圖從其中拉出)到搜索框中,然後您會看到將黃色/橙色對象拖到場景中並將其類型在身份檢查器中更改爲你的視圖控制器。然後勾上你場景中的一個視圖來控制它。在你的代碼中,你只需要爲你的視圖控制器類使用一個IBOutlet,然後將對象連接到它。 –

+0

但是如何掛鉤一個視圖來控制?我做的是如下:選擇故事板文件 - >拖動viewcontroller(主視圖控制器),TableviewController(其中一個子視圖控制器)&1多UIViewController(另一個子視圖控制器)。然後在主視圖控制器中爲UITableViewController&UIViewController創建了2個IBOutlets。然後選擇Main UIViewController->右鍵單擊它並將創建的IBOutlet連接到storyBoard中的TableViewController。但它沒有創建連接。是否讓我知道如果我做錯了 – Sayali

0

還有一種方法,它不是哈克。它在UITabBarControllers的以下URL中描述,您可以使用列表中的第一個視圖控制器控制第一個子視圖,第二個視圖控制器控制另一個。或者,您可以調整代碼以使用UISplitViewController。

http://bartlettpublishing.com/site/bartpub/blog/3/entry/351

基本上,它的工作原理是在運行時更換tabbarcontroller的iOS已經完成配置之後。

+0

僅供參考 - 從iOS 7開始,這不起作用了。可能有辦法讓類似的事情發生,但我們將項目切換到標準的標籤欄。 – johnnyb

相關問題