我在iOS上运行启用6.0分镜
我有一个NavController链接到TableViewController。 这可以TableView中Segue公司以AViewController或BViewController。
当我在,我想弹出回到根,并执行与赛格瑞此行B:
UINavigationController *nav = self.navigationController;
[nav popToRootViewControllerAnimated:YES];
[nav performSegueWithIdentifier:@"GoToB" sender:self];
我查了故事板,GOTOB确实存在,从TableViewController挂BViewController
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<NavMainViewController: 0xb921fa0>) has no segue with identifier 'GoToB''
我在想什么?
该SEGUE将连接到你弹出来,而不是视图控制器nav
是包含它的容器视图控制器。 因此,这将是更接近:
UINavigationController *nav = self.navigationController;
[nav popToRootViewControllerAnimated:YES];
UIViewController *rootVC = [nav.viewControllers objectAtIndex:0];
[rootVC performSegueWithIdentifier:@"GoToB" sender:self];
但是,我觉得这里的问题将是流行的动画将与SEGUE冲突。 这样做有...动画弹出:NO可能修复它,但我认为这将是更正确的(和动画更稳健),从rootVC执行SEGUE。
rootVC将实现如下viewDidAppear:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
if (!self.isBeingPresented && /* any other condition that makes you want this */) {
[self performSegueWithIdentifier:@"GoToB" sender:self];
}
}