我怎么能从一个子视图控制器访问父视图控制器的视图?
我有一个主视图控制器,负责我的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?) { }