我目前正在尝试使用push segue在两个视图之间导航。这在我的应用程序的其他地方工作正常,没有问题但是,在这个特定的位置,我遇到了以下错误:
Terminating app due to uncaught exception 'NSGenericException',
reason: 'Push segues can only be used when the source controller is
managed by an instance of UINavigationController.
现在就是这样,我确切地知道这个错误意味着什么,以及如何解决它。
编辑 - >嵌入 - >视图控制器上的导航控制器我正试图推动。
问题是,我已经完成了这个并且错误仍然存在。有什么想法吗?
对于它的价值,导航栏甚至不会出现在导航控制器内嵌的视图中。
这是当前的设置
我在故事板上有一个ViewController,它设置为从UIViewController继承。该控制器通过上述方法嵌入在UINavigation控制器中。
在此视图控制器视图中,有两个按钮。在IB内部,我已经将每个按钮中的push segue拖动到我想要呈现的相应视图控制器中。
我还尝试通过以下方式在代码中执行segue:
- (IBAction)btnTerms:(id)sender {
UIViewController *termsVC = [STORYBOARD instantiateViewControllerWithIdentifier:@"TermsOfServicesViewController"];
[self.navigationController pushViewController:termsVC animated:YES];
}
在上述情况下,根本没有任何事情发生。没有崩溃或任何事情。但是,调试器断点确认该方法正在被命中。
根据Phillip的问题更新
UINavigationController *nav = self.navigationController;
[self.navigationController pushViewController:termsVC animated:YES];
- (IBAction) btnSignUpCLicked:(UIButton *)sender {
[self presentViewController:[STORYBOARD instantiateViewControllerWithIdentifier:@"SignUpViewController"] animated:YES completion:nil];
}
答案 0 :(得分:1)
来自评论:
在导航控制器中嵌入视图控制器将导致嵌入式控制器在其导航控制器执行时加载。反过来并不暗示(这是合理的,因为可能存在嵌入式控制器也可以单独使用的情况。)