雖然這當然是可能的,什麼可能是一個更好的主意是在兩種情況下加載您的導航控制器,並根據他們是否已經註冊了,使用不同的根視圖控制器。
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