我很难将数据传递给位于容器视图中的 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 有效。Tab 1 在运行时中断了程序,由于“[containerViewController childViewControllers]”返回一个空数组而终止,因此对 objectAtIndex:1 的调用(我希望它引用 tableView)超出了范围。我想知道在程序执行的这一点上是否没有初始化容器视图?但老实说,我不知道。
我认为我的查询与容器视图的关系不大,而与层次遍历有关,因此尽管在有关容器视图的文档中查看了解决方案,但我确实没有找到太多帮助。
提前感谢您的任何提示!