我需要以編程方式遍歷故事板層次結構的幫助。這張圖片應該給出一些上下文:storyboard。該分層結構由一個splitViewController組成,其主控是一個帶有三個選項卡的tabViewController。第一個標籤包含兩個容器視圖,下面的視圖是'問題孩子'。爲masterController位於容器視圖中的splitViewController指派委託
我已經成功穿越層次,併爲接頭2和3的委託分配給detailViewController的masterViewController:
UISplitViewController *splitViewController = (UISplitViewController *) self.window.rootViewController;
UITabBarController *masterTabBarController = [[splitViewController viewControllers] objectAtIndex:0];
MasterViewController *masterViewController2 = [[masterTabBarController viewControllers] objectAtIndex:1];
MasterViewController *masterViewController3 = [[masterTabBarController viewControllers] objectAtIndex:2];
masterViewController2.delegate = detailTableViewController;
masterViewController3.delegate = detailTableViewController;
然而,標籤1一直因爲容器的觀點更令人側目。我嘗試沒有奏效,並導致索引出界外的錯誤:
UIViewController *containerViewController = [[masterTabBarController viewControllers] objectAtIndex:0];
MasterViewController *masterViewController1 = [[containerViewController childViewControllers] objectAtIndex:1];
masterViewController1.delegate = detailTableViewController;
因此而不是AppDelegate中,我也試着我的MasterViewController自身內的其他兩條路線:
- (void)viewDidLoad
{
self.delegate = (DetailTableViewController *)[[self.splitViewController.viewControllers lastObject] presentedViewController];
//self.delegate = [[self.parentViewController.parentViewController.parentViewController.childViewControllers objectAtIndex:1] objectAtIndex:0]; Granted this should ONLY work for tab 1...but it doesnt.
}
但未註釋的行返回零...
所以我希望有些靈魂理解容器視圖(因爲有驚人的關於這些被發現的小細節)以及如何通過遍歷訪問和分配委託給他們或其他一些技術。必須有更好的方式 - 我在這裏有一個非常小的應用程序;我無法想象必須單獨走幾十個屏幕的複雜應用程序的層次結構。
在此先感謝!
有沒有黑魔法,當涉及到容器和子視圖控制器。你的第一個解決方案對我來說看起來沒問題,只要孩子能正確地鏈接到他們的父母。由於在不到2個對象'[containerViewController childViewControllers]',或者您的視圖控制器層次結構設置不正確,或'containerViewController'不是對象,你認爲它是。你能否展示更多代碼,直到你設置'containerViewController'的值爲止,你是如何遍歷視圖控制器層次結構的? – herzbube
哇,我也無意離開了這個代碼的關鍵行[將編輯的問題以及]: '的UIViewController * containerViewController = [[masterTabBarController viewControllers] objectAtIndex:0];' 此行是唯一缺少的代碼從我以前發佈的鏈接。這當然是爲了提供對容納所述兩個容器的觀點了UIView,下部容器視圖被關注的一個基準的。所以,當我實例containerViewController我希望調用'[containerViewController childViewControllers] objectAtIndex:1]'將返回我需要什麼... – OneManBand