我有困難傳遞數據到被容納在容器視圖內,在這裏可以看到一個tableViewController:
對於上下文,其中包含兩個容器視圖的視圖控制器本身是tabViewController的第一個選項卡,充當splitViewController的詳細視圖的主視圖。集裝箱觀點與傳遞數據
首先 - 我是否正確使用容器視圖?第一個選項卡的目的是在頂部顯示一些可通過push segue編輯的過濾器設置(因此它是一個導航控制器),在底部,tableView的數據將根據過濾條件進行更新。使用兩個容器視圖來完成這個功能似乎很直觀,但我幾乎沒有經驗,也不知道是否有更好的方法,或者容器視圖的效用比看起來好多少。
對於原始問題 - 假設這個層次結構有意義,我無法將數據傳遞給此特定的tableViewController。還有其他兩個選項卡在tabViewController,兩者都不利用容器視圖,所以我已經能夠成功地遍歷以顯示在使用的appDelegate這些標籤數據的層次結構,如下所示:
// Initial Setup
UISplitViewController *splitViewController = (UISplitViewController *) self.window.rootViewController;
UITabBarController *masterTabBarController = [[splitViewController viewControllers] objectAtIndex:0];
// Tab 1: Filter by Location:
// >>> **PROBLEM CODE SEGMENT** <<<
UIViewController *containerViewController = [[masterTabBarController viewControllers] objectAtIndex:0];
MasterViewController *masterViewController0 = [[containerViewController childViewControllers] objectAtIndex:1];
masterViewController0.slotMachines = machines;
// Tab 2: Filter by ID#:
MasterViewController *masterViewController1 = [[masterTabBarController viewControllers] objectAtIndex:1];
masterViewController1.slotMachines = machines;
// Tab 3: Audited
MasterViewController *masterViewController2 = [[masterTabBarController viewControllers] objectAtIndex:2];
masterViewController2.slotMachines = machines;
我已經跳過了通過代理將數據分配給每個masterViewController0/1/2的代碼片段。如前所述,表2和表3適用。選項卡1在運行時分解程序,終止是因爲'[containerViewController childViewControllers]'返回一個空數組,因此對objectAtIndex:1的調用(我希望它會引用tableView)是超出範圍的。我想知道容器視圖在程序執行的這個時候是不是初始化的?但我真的不知道。
我覺得我的查詢與容器視圖有關,並且更多地與層次遍歷有關,因此儘管在容器視圖的文檔中查看了解決方案,但我確實沒有找到太多幫助。
在此先感謝您的任何提示!
謝謝你的迴應。我想知道你是否可以在你的答案中解釋一點點?我喜歡不必手動遍歷層次結構的想法,因此使所有視圖控制器都可以訪問的類看起來非常有吸引力。你推薦任何我可以參考的文章來幫助我實現這種行爲嗎?我真的很感激它! – OneManBand
感謝您的額外信息!很有幫助。 – OneManBand