我怎么能从一个子视图控制器访问父视图控制器的视图?

我有一个主视图控制器,负责我的2D opengl ES视图的绘图,以及一个子视图控制器buttonManager,它决定在启动时加载和绘制哪些button。

一旦用户按下其中一个button,这个视图控制器被创build,它的视图应该出现,但视图永远不会被添加,但已经被testing工作。 下面是我的代码从主视图控制器:

buttonManager=[[ButtonManager alloc] init]; [self addChildViewController:buttonManager]; [self.view addSubview:buttonManager.view]; 

并inheritance我的代码来启动这个观点:

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

要访问父视图控制器,你可以使用self.parentViewController 。 一旦你有了它,你可以简单地通过使用它的view属性来访问它的视图

请注意那些使用iOS 5.x +的人

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

那是对我有用的

  - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { NSString * segueName = segue.identifier; if ([segueName isEqualToString: @"child-view"]) { ChildViewController * childViewController = (ChildViewController *) [segue destinationViewController]; [self addChildViewController:childViewController]; } } 

现在他们杀死了

 self.parent 

您可以使用

 override func didMove(toParentViewController parent: UIViewController?) { }