【问题标题】:(UINavigationController) PushViewController fails after PresentViewController(UINavigationController) PushViewController 在 PresentViewController 之后失败
【发布时间】:2015-11-13 09:07:56
【问题描述】:

我正在构建一个主要内容是导航控制器的应用程序。但是,第一次加载应用程序时,我将另一个视图控制器推到该控制器之上(用户必须注册等)。这必须与导航控制器分开,因此用户不能只是回溯。目前,通过我的导航控制器进行导航仅在其他视图控制器未加载时有效。

如果需要,加载“注册”VC的代码:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if ([prefs objectForKey:@"id"]) {

}
else {
    RegisterViewController * rvc = [storyboard instantiateViewControllerWithIdentifier:@"registerVC"];
    [self.navigationController presentViewController:rvc animated:NO completion:^(void){}];
}

注册完成后:

[viewCtrl dismissViewControllerAnimated:NO completion:^(void){
                NSLog(@"VIEW DISMISSED PROPERLY");
            }];

注意:viewCtrl 是被推送的 viewController。当导航控制器停止工作时,也会调用“视图已正确关闭”。所以我知道这个观点正在被驳回。

最后,将另一个页面正常推送到导航控制器的代码:

ContactViewController * cvc = [self.view.storyboard instantiateViewControllerWithIdentifier:@"contactVC"];
[self.view.navigationController pushViewController:cvc animated:NO];

重申一下,ContactViewController 仅在未加载注册页面时加载。

提前致谢。

【问题讨论】:

    标签: ios objective-c uinavigationcontroller


    【解决方案1】:

    您应该在关闭完成后推送其他 ViewController:

        [viewCtrl dismissViewControllerAnimated:NO completion:^(void){
                        NSLog(@"VIEW DISMISSED PROPERLY");
                        ContactViewController * cvc = [self.view.storyboard instantiateViewControllerWithIdentifier:@"contactVC"];
                        [self.view.navigationController pushViewController:cvc animated:NO]
                    }];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 2015-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多