2012-11-09 73 views
0

我有一個iOS應用程序,它具有頁面視圖以顯示多個項目作爲頁面。每個頁面都包含一個帶有2個選項卡的選項卡欄控制器,因此我可以以兩種方式顯示每個頁面的信息 - 以表格或圖表形式顯示。下面是截圖:iOS - 如何將數據注入到標籤欄控制器中顯示的視圖控制器?

Pages and tabs screenshot

所以用戶選擇通過改變頁面來看看(在這種情況下香蕉)的項目。但我無法弄清楚在哪裏或如何將他們正在查看的項目注入到選項卡控制器中的2個視圖控制器中。如果有幫助,這是我的故事板的一個鏡頭。我想在創建表視圖控制器或圖形控制器時注入它,但是我無法看到發生在那個代碼的位置 - 我錯過了什麼?

謝謝。

enter image description here

回答

0

不知道這是否會工作在storybaord環境相同,但有UITabBarControllerDelegate有一個名爲didSelectViewController的回調方法。它會給你正在選擇的視圖控制器。 Doc from Apple.

+0

也嘗試了這一點 - 使我的標籤欄控制器子類實現UITabBarControllerDelegate並將其設置爲標籤欄委託,但在運行時出現以下錯誤:'更改由標籤欄控制器管理的標籤欄的委託不被允許。 – ssloan

+0

得到了這種工作的變體 - 我不再在故事板中設置UITabBarController,而是在其顯示的視圖加載時以編程方式創建一個新的。然後按照你所說的設置它的委託,並且可以使用didSelectViewController:方法。這也意味着我手動創建表格和圖形控制器,這樣我就可以在創建時向他們注入東西。謝謝。 – ssloan

0

如果我的理解是正確的,你應該繼承你的標籤欄控制器和執行

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 

方法。

在那裏,您可以通過segue對象的destinationViewController屬性訪問目標視圖控制器。

根據SEGUE標識符可以自定義你的目標視圖控制器:

if ([segue.identifier isEqualToString:@"SegueID"]) { 
    MyViewController *myViewController = (MyViewController *)segue.destinationViewController; 
    //customize view controller 
} 
+0

我剛剛試過這個,但是prepareForSegue:方法從來沒有被調用過 - 標籤欄控制器和表格/圖形控制器之間的界線是'關係'不是segues - 還有無處設置segue標識符。 – ssloan

相關問題