我有一个带有3个viewControllers的navigationController,我称之为模态。
当我到达最后一个viewController时,我想按下一个doneButton来解除模态navigationController并对presentViewController执行一些操作,因为presentViewController可以是3种不同的类型。
所以在我上一次viewController的doneAction中,我想测试的是什么是presentsViewController,但是当我要求presentViewController时我得到(null)。
以下是一些显示我的问题的NSLogs测试代码:
- (IBAction)doneAction:(id)sender {
[self dismissViewControllerAnimated:YES completion:^(void){
NSLog(@"nav VC count : %u", self.navigationController.viewControllers.count);
NSLog(@"nav nav VC count : %u", self.navigationController.navigationController.viewControllers.count);
NSLog(@"presenting VC: %@", NSStringFromClass(self.presentingViewController.class));
NSLog(@"nav VC: %@", NSStringFromClass(self.navigationController.class));
NSLog(@"nav presenting VC: %@", NSStringFromClass(self.navigationController.presentingViewController.class));
}
输出:
2013-09-25 14:44:40.819 Twinkler[10636:a0b] nav VC count : 3
2013-09-25 14:44:40.819 Twinkler[10636:a0b] nav nav VC count : 0
2013-09-25 14:44:40.819 Twinkler[10636:a0b] presenting VC: (null)
2013-09-25 14:44:40.820 Twinkler[10636:a0b] nav VC: UINavigationController
2013-09-25 14:44:40.820 Twinkler[10636:a0b] nav presenting VC: (null)
有谁知道为什么它不可用?
提前致谢。
答案 0 :(得分:1)
有点不清楚你的结构是什么,但如果它是呈现的导航控制器,你应该使用它来解雇(实际上,它会将消息转发给它的呈现视图控制器)。试试这个:
[self.navigationController dismissViewControllerAnimated:YES completion:nil];