虽然这当然是可能的,什么可能是一个更好的主意是在两种情况下加载您的导航控制器,并根据他们是否已经注册了,使用不同的根视图控制器。
if (hasUserSignedUp) {
nav = [[UINavigationController alloc] initWithRootViewController:rootViewController];
}
else {
su = [[SignUpViewController alloc] initWithNibName:nil bundle:nil];
nav = [[UINavigationController alloc] initWithRootViewController:su];
}
[window addSubview:nav.view];
[window makeKeyAndVisible];
应用程序删除应该创建视图层次结构的根,并从那里,你可以按照你认为合适的方式操纵它。
如果我是你,我会用上面的代码,一旦他们已签署或签署,推动定期根视图控制器,然后修改导航栈栈:
[self.navigationController pushViewController:rootViewController animated:YES];
double delayInSeconds = 0.5f;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
self.navigationController.viewControllers = [NSArray arrayWithObject:self.navigationController.viewControllers.lastObject];
});
这ISN”最简洁的方式来做到这一点(dispatch_after
),但你看看它是如何完成的。确保rootViewController的hidesBackButton
设置为YES
。
我不认为这应该被拒绝;虽然这个问题本质上也是技术性的,但它也是一个哲学问题,它削减了'applicationDidFinishLaunching:'方法负责的核心问题。 – 2012-04-13 23:42:33
我确实尝试过。否则,我不需要发布问题。如果你没有什么有用的话,那么不要说“不要说了吧!真的很常见, – rosst400 2012-04-13 23:57:49
我会同意@ edc1591这篇文章,如果你的意思不是”会编译和运行“那么你需要这样说,我们不能猜测没有提到的问题 – mydogisbox 2012-04-14 00:09:49