我正在尝试添加注册页面&我的应用程序的验证页面有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]
}];
答案 0 :(得分:0)
最有可能是因为您在解雇VerificationPage
的同时尝试展示RegistrationPage
而导致的问题。来自Apple文档:
解雇视图控制器不仅会解除视图控制器,还会解除它所呈现的任何视图控制器。
因此,有两个可能的订单,其中任何一个都会导致失败 - 创建并显示VerificationPage
,然后RegistrationPage
被解雇 - 取呈现的VerificationPage
用它。或者,RegistrationPage
被解除并销毁,然后presentViewController
来电被发送给它 - 导致失败,因为RegistrationPage
不再是有效的ViewController
。
要解决此问题,请将RegistrationPage
保持打开并在其上显示VerificationPage
(不理想,但会有效),或发出AppDelegate
或ViewController
信号在链上方(您可以使用self.presentingViewController
)代替进行演示。