传递对ContainerView中对象的引用

时间:2013-02-07 00:39:10

标签: ios objective-c uinavigationcontroller

enter image description here

要在我的主视图控制器中传递对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应该是什么代码?

感谢。

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];