0

我有一个带有 3 个视图控制器的导航控制器,我称之为模式。

当我到达最后一个 viewController 时,我想按下一个 doneButton,它将关闭模式 navigationController 并对presentingViewController 执行一些操作,因为presentingViewController 可以是3 种不同的类型。

所以在我最后一个 viewController 的 doneAction 中,我想测试什么是presentingViewController,但是在询问presentingViewController 时我得到(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)

有谁知道为什么它不可用?

提前致谢。

4

1 回答 1

1

有点不清楚你的结构是什么,但如果它是呈现的导航控制器,你应该使用它来执行解雇(实际上,它会将消息转发到它的呈现视图控制器)。尝试这个:

[self.navigationController dismissViewControllerAnimated:YES completion:nil];
于 2013-09-25T15:07:49.250 回答