连续调用PresentViewController

时间:2012-11-13 05:47:02

标签: iphone objective-c ios

我正在尝试添加注册页面&我的应用程序的验证页面有3个视图,可以使用UITabBarController切换到或来自。注册页面应该只在此应用程序的生命周期中显示一次。用户注册后,此视图将消失,并由验证页面替换。验证用户身份后,用户就可以使用该应用。

现在在AppDelegate中,我有以下代码向用户显示注册页面:

        RegistrationPage *registration  = [[RegistrationPage alloc] initWithNibName:@"RegistrationPage" bundle:nil];
    [self.window.rootViewController  presentViewController:registration animated:YES completion:nil];

用户填写注册页面并按下提交按钮后,以下代码用于关闭注册页面并显示验证页面:

    VerificationPage *verification  = [[VerificationPage alloc] initWithNibName:@"VerificationPage" bundle:nil];
[self dismissViewControllerAnimated:YES completion:^{
    [self addVerificationPage];
}];


-(void) addVerificationPage
{
 VerificationPage *verification  = [[VerificationPage alloc] initWithNibName:@"VerificationPage" bundle:nil];

 [self presentViewController:verification animated:YES completion:nil];
 }

然而,验证页面从未显示过。有人可以帮我这个吗?

我也在注册页面尝试了这个,但也不起作用:

    VerificationPage *verification  = [[VerificationPage alloc] initWithNibName:@"VerificationPage" bundle:nil];
[self dismissViewControllerAnimated:YES completion:^{
    [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:verification animated:YES]
}];

1 个答案:

答案 0 :(得分:0)

最有可能是因为您在解雇VerificationPage的同时尝试展示RegistrationPage而导致的问题。来自Apple文档:

  

解雇视图控制器不仅会解除视图控制器,还会解除它所呈现的任何视图控制器。

因此,有两个可能的订单,其中任何一个都会导致失败 - 创建并显示VerificationPage,然后RegistrationPage被解雇 - 取呈现的VerificationPage用它。或者,RegistrationPage被解除并销毁,然后presentViewController来电被发送给它 - 导致失败,因为RegistrationPage不再是有效的ViewController

要解决此问题,请将RegistrationPage保持打开并在其上显示VerificationPage(不理想,但会有效),或发出AppDelegateViewController信号在链上方(您可以使用self.presentingViewController)代替进行演示。