0

我正在尝试向我的应用程序添加一个注册页面和一个验证页面,该应用程序有 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]
}];
4

1 回答 1

0

很可能是由于VerificationPage在您关闭RegistrationPage. 从苹果文档:

关闭视图控制器不仅会关闭该视图控制器,还会关闭它呈现的任何视图控制器。

结果,有两种可能的命令,其中任何一种都会导致失败——要么VerificationPage被创建并呈现,然后RegistrationPage被解雇——带着呈现VerificationPage。或者,RegistrationPage被解除并销毁,然后presentViewController调用被发送到它 - 导致失败,因为RegistrationPage不再是有效的ViewController

要解决这个问题,要么保持RegistrationPage开放状态,然后VerificationPage在上面展示(不理想,但它会起作用),或者向链条上的AppDelegate或更高层发出信号(你可以使用)来代替展示。ViewControllerself.presentingViewController

于 2012-11-13T06:19:02.883 回答