我有一个主视图控制器,负责我的2D opengl ES视图的绘图,以及一个子视图控制器buttonManager,用于确定在启动过程中要加载和绘制的按钮。
一旦用户按下其中一个按钮,就会创建此视图控制器,并且应该显示其视图,但视图永远不会被添加但已经过测试才能工作。下面是来自主视图控制器的代码:
buttonManager=[[ButtonManager alloc] init];
[self addChildViewController:buttonManager];
[self.view addSubview:buttonManager.view];
并且我的代码启动了这个视图:
-(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];
}
答案 0 :(得分:39)
要访问父View控制器,您可以使用self.parentViewController
。拥有它后,您只需使用其view
属性
答案 1 :(得分:25)
使用iOS 5.x +
的用户请注意 self parentViewController
现在返回nil
。您现在必须使用self presentingViewController
来获得相同的结果。有关升级代码库的更多信息和其他解决方法,请参阅此博客文章:http://omegadelta.net/2011/11/04/oh-my-god-they-killed-parentviewcontroller/
答案 2 :(得分:3)
这对我有用
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSString * segueName = segue.identifier;
if ([segueName isEqualToString: @"child-view"]) {
ChildViewController * childViewController = (ChildViewController *) [segue destinationViewController];
[self addChildViewController:childViewController];
}
}
答案 3 :(得分:2)
现在他们杀了
之后self.parent
你可以使用
override func didMove(toParentViewController parent: UIViewController?)
{
}
答案 4 :(得分:0)
我使用目标c块方法完成此任务。看看这个块教程。 https://www.youtube.com/watch?v=FS4JAy1Wy3w