Iphone 在故事板中使用带选项卡栏控制器的核心数据
我正在从视图控制器调用选项卡栏控制器,以实现用户可以配置的一系列附加控件和输入。在情节提要中,这很容易做到,但如何才能最好地将核心数据管理对象上下文传递给由选项卡控制器承载的视图控制器?这里的最佳设计方法是什么:Iphone 在故事板中使用带选项卡栏控制器的核心数据,iphone,ios,core-data,storyboard,Iphone,Ios,Core Data,Storyboard,我正在从视图控制器调用选项卡栏控制器,以实现用户可以配置的一系列附加控件和输入。在情节提要中,这很容易做到,但如何才能最好地将核心数据管理对象上下文传递给由选项卡控制器承载的视图控制器?这里的最佳设计方法是什么: 忘记情节提要,用代码完成应用程序的这一部分?这很简单。我只需将托管对象上下文传递给每个视图,然后再将它们添加到选项卡控制器 向启动选项卡视图控制器的视图控制器添加托管对象上下文属性?在每个目标视图控制器中使用presentingViewController属性当然可以做到这一点,但这似
presentingViewController
属性当然可以做到这一点,但这似乎不是最初的目的dismissModalViewController
消息中执行任何其他操作,即可返回到原始视图。其他一切都通过核心数据进行管理 有几个选项:
prepareForSegue
过程中传递托管对象上下文(您必须访问选项卡视图控制器的viewControllers
数组才能获得单个视图控制器)prepareForSegue
过程中传递托管对象上下文(您必须访问选项卡视图控制器的viewControllers
数组才能获得单个视图控制器)当主视图控制器收到
-prepareforsgue:
消息时,选项卡栏控制器及其管理的视图控制器将已经创建。您可以从segue本身获取选项卡栏控制器,然后从选项卡栏控制器获取视图控制器数组,如下所示:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
UITabBarController *tbc = [segue destinationViewController];
NSArray *controllers = [tbc viewControllers];
NSLog(@"View Controllers: %@", controllers);
}
现在,您需要执行一点错误检查,以确保目标控制器确实是选项卡栏控制器,但您可以使用代码替换
NSLog()
,以根据需要配置控制器。出于您的目的,这只意味着向他们提供他们应该操作的托管对象上下文。当主视图控制器收到-prepareforsgue:
消息时,选项卡栏控制器及其管理的视图控制器将已创建。您可以从segue本身获取选项卡栏控制器,然后从选项卡栏控制器获取视图控制器数组,如下所示:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
UITabBarController *tbc = [segue destinationViewController];
NSArray *controllers = [tbc viewControllers];
NSLog(@"View Controllers: %@", controllers);
}
现在,您需要执行一点错误检查,以确保目标控制器确实是选项卡栏控制器,但您可以使用代码替换NSLog()
,以根据需要配置控制器。出于您的目的,这只意味着向他们提供他们应该操作的托管对象上下文