我从视图控制器以模态方式调用标签栏控制器,以实现用户可以配置的一系列附加控件和输入。在故事板中,这很容易做到但是如何才能最好地将Core Data托管对象上下文传递给由选项卡控制器托管的视图控制器?这里最好的设计方法是什么:
presentingViewController
属性,但似乎不是最初的目的。来自托管数据上下文的公寓,从dismissModalViewController
消息返回返回原始视图的任何其他内容都不需要。其他所有内容都通过Core Data进行管理。
答案 0 :(得分:1)
有两种选择:
prepareForSegue
期间传递托管对象上下文(您必须访问选项卡视图控制器的viewControllers
数组以获取您的各个视图控制器)答案 1 :(得分:0)
当主视图控制器收到-prepareForSegue:
消息时,标签栏控制器和它管理的视图控制器已经创建。您可以从segue本身获取标签栏控制器,然后从标签栏控制器中获取视图控制器数组,如下所示:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
UITabBarController *tbc = [segue destinationViewController];
NSArray *controllers = [tbc viewControllers];
NSLog(@"View Controllers: %@", controllers);
}
现在,您需要进行一些错误检查,以确保目标控制器确实是标签栏控制器,但您可以用代码替换NSLog()
以配置您喜欢的控制器。出于您的目的,这只是意味着将它们应该运行的托管对象上下文交给它们。