要在我的主视图控制器中传递对managedObjectContext的引用,我在我的App委托中有以下代码,并且工作正常:
//Grab the Navigation Controller in front of the Main View Controller
UINavigationController *nav = (UINavigationController *)self.window.rootViewController;
//Grab Main View Controller out of the navigation controller at Position 0
SceneTwo *sceneTwo = (SceneTwo *) [[nav viewContollers]objectAtIndex:0];
//Pass the reference to managedObjectContext.
sceneTwo.managedObjectContext = self.managedObjectContext;
问题:我想在主视图控制器(场景1)内的ContainerView中传递对managedObjectContext的引用,该控件在它前面有一个导航控制器。请看上面的图片。
获取containerView导航控制器的代码应该是什么? 从该导航控制器中获取场景1应该是什么代码?
感谢。
答案 0 :(得分:0)
因为主视图控制器使用容器视图,所以您可以遍历主视图控制器中childViewControllers
数组中的视图。看一下图表,看起来第一个应该是您之后的导航控制器。以下内容可以进入MainViewController
。
UINavigationController *scene1Nav = (UINavigationController *)[[self childViewControllers] objectAtIndex:0];
找到正确的答案后,您就可以为其设置managedObjectContext
。
替代方案(迭代所有子视图和导航控制器可能不那么痛苦)可能是在场景中自己设置场景的managedObjectContext
,并引用应用程序委托 - 例如,在viewDidLoad
需要上下文的控制器中。要使其正常工作,managedObjectContext
将需要是App Delegate的属性或getter方法。
self.managedObjectContext = [(YourAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];