2012-03-28 62 views
2

的我卡上的問題,我真的不知道該如何解決:推視圖控制器在最前面TabBarController

我有我的AppDelegate定義的TabBarController。

UITabBarController *tabBarController = [[UITabBarController alloc] init]; 

在這種TabBarController我有有UiVieController內的其他幾個NavigationControllers:

ProgramController *programContr = [[ProgrammController alloc] init]; 
UINavigationController navControllerPro = [[UINavigationController alloc] initWithRootViewController:programContr]; 

ManualController *manualContr = [[ManualController alloc] init]; 
UINavigationController navControllerMan = [[UINavigationController alloc] initWithRootViewController:manualContr]; 

,我添加NavigationController到TabBarController:

tabBarController.viewControllers = [NSArray arrayWithObjects:navControllerPro,navControllerMan, nil]; 

我的tabBarController設置爲RootViewController的:

self.window.rootViewController = tabBarController; 
[[self window] makeKeyAndVisible]; 

工作正常。 現在我想在上面添加一個「登錄屏幕」。 我這樣做有:

[tabBarController presentModalViewController:navControllerLogin animated:YES]; 

現在TabBarController加載其後臺內容即使LoginViewController在前面。只有在LoginViewController上按下按鈕時如何加載TabBarController?

請幫幫我。

回答

1

每次加載標籤欄控制器時,都會將其設置爲rootViewController。

你應該設置一個普通的viewController作爲根..如果登錄成功,你應該調用tabBarController來加載。

換句話說,在appDelegate中應該只有登錄窗口..並且在loginViewController中,如果登錄成功,您應該調用並加載您的tabBarController及其所有控制器..使用storyboard使其成爲很多更輕鬆。

+0

但後來我必須在loginController中使用它的subViewController初始化整個tabBarController,對吧? – user944351 2012-03-28 14:01:15

+0

好的,謝謝... – user944351 2012-03-28 14:03:57

+0

好吧,它的實際做法是在需要時加載視圖,這被稱爲「懶惰分配」。您的應用程序將更快打開。 – 2012-03-28 14:09:32

相關問題