presentingViewController

presentingViewController

我有一个我将其作为模态调用的带有3个viewControllers的navigationController。

当我到达最后一个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)


有谁知道为什么不可用?

提前致谢。

最佳答案

尚不清楚您的结构是什么,但是如果显示的是导航控制器,则应使用它进行解雇(实际上,它将把消息转发到其呈现的视图控制器)。尝试这个:

[self.navigationController dismissViewControllerAnimated:YES completion:nil];

07-28 04:50