我有一个子视图控制器,我从我的一个视图设置,如下所示:
UIViewController *viewController = [[CCouponDetailViewController alloc] init];
[self addChildViewController:viewController];
[self.view addSubview:viewController.view];
[viewController didMoveToParentViewController:self];
我试图从子视图控制器执行一个segue并且它崩溃了应用程序,我不知道为什么。我有一个从子视图到具有正确标识符的预期视图的segue,并且我还有一个从父视图到具有相同标识符的预期视图的segue(我不确定它需要哪一个来自)。
然而,每次遇到此行时应用程序都会崩溃:
[self performSegueWithIdentifier:@"toConfirmPage" sender:button];
我也尝试创建父变量并将其设置为父视图控制器,然后尝试使用segue,如下所示:
UIViewController *parent = self.parentViewController;
[parent performSegueWithIdentifier:@"toConfirmPage" sender:button];
我发现这并没有让应用程序崩溃,但也没有执行segue。我不确定需要做些什么来让segue工作,任何想法?谢谢!
答案 0 :(得分:0)
[由OP澄清后编辑]
总结一下我现在对此的理解。
你有一个视图控制器' A'你已经添加了一个子视图控制器' B'至。
用户单击子VC(A)视图中的按钮。
您从子VC(A)执行segue,这将导致您想要呈现的新视图而不是父级' A'。
首先,父母VC' A'正确实现容器视图方法(请参阅UIControllerView文档中的'管理自定义容器中的子视图控制器)。除非你这样做,否则你不应该嵌套VC。
其次,您应该在要消失的VC上调用performSegue,在这种情况下,它是父VC' A'。如果它不起作用,请检查您的变量' parent'不是零。
第三个选项是在异常上设置断点(在断点列表中添加异常)。这将在发生异常的位置为您提供堆栈回溯。
希望这会有所帮助 戈登
答案 1 :(得分:0)
如果未将“toConfirmPage”设置为子控制器的属性中的标识符,应用程序将崩溃。
您还需要替换[self.view addSubview:viewController.view];
[self.view addSubview:self.currentClientView];
查看Apple Doc on Custom Containers
最后但并非最不重要的是,请发布崩溃日志。使用Pastebin来提供日志。我认为你的崩溃日志也可能告诉你出了什么问题。