如何从子视图控制器访问父视图控制器的视图?

jfi*_*isk 19 uiviewcontroller ios ios5

我有一个主视图控制器,负责我的2D opengl ES视图的绘图,以及一个子视图控制器buttonManager,它确定在启动过程中要加载和绘制的按钮.

一旦用户按下其中一个按钮,就会创建此视图控制器,并且应该显示其视图,但视图永远不会被添加但已经过测试才能工作.继主视图控制器中的代码:

 buttonManager=[[ButtonManager alloc] init];
 [self addChildViewController:buttonManager];
 [self.view addSubview:buttonManager.view];
Run Code Online (Sandbox Code Playgroud)

并继承我的代码以启动此视图:

-(void)launchStopDialog: (NSString*)stopName {
    NSLog(@"stopdialog should be launched.");
    if (stopDialogController == nil)
        stopDialogController = [[StopDialogController alloc] initWithNibName:@"StopDialog" bundle:nil];
    if (stopDialogController)
        [stopDialogController presentWithSuperview:self.view.superview withStopName:stopName]; 
}
Run Code Online (Sandbox Code Playgroud)

aqs*_*aqs 41

要访问父View控制器,您可以使用self.parentViewController.一旦拥有它,您只需使用其view属性即可访问其视图

  • 在Swift 3.0中使用`self.parent`"是的!Swift 3.0,%$ ^%!" (c)破坏 (10认同)
  • @aqs :为什么 ViewDidLoad 中的 self.parent *nil* ? (2认同)

Jer*_* C. 27

请注意使用iOS 5.x +的用户

self parentViewController现在回来了nil.您现在必须使用self presentingViewController以获得相同的结果.有关升级代码库的更多信息和其他解决方法,请参阅此博客文章:http://omegadelta.net/2011/11/04/oh-my-god-they-killed-parentviewcontroller/