如果用戶由於某種原因退出應用程序,我正在構建具有不同狀態的應用程序,這些狀態需要恢復。這意味着,當應用程序啓動時,不同的屏幕/視圖控制器需要位於導航堆棧之上。爲了達到這個目的,我試圖以編程方式構建視圖控制器,如下所示:儘管viewDidLoad被調用,但是iOS ViewController並未出現
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
switch (appState)
{
case CSAppStateIdle:
{
//replace and push rootview manually
MainVC* mainView = [storyboard instantiateViewControllerWithIdentifier:@"MainVC"];
[(UINavigationController *)self.window.rootViewController pushViewController:mainView animated:YES];
}
break;
case CSAppStateSomeState:
{
MainVC* mainView = [storyboard instantiateViewControllerWithIdentifier:@"MainVC"];
SomeVC* someView = [storyboard instantiateViewControllerWithIdentifier:@"SomeVC"];
[(UINavigationController *)self.window.rootViewController addChildViewController:mainView];
[(UINavigationController *)self.window.rootViewController pushViewController:someView animated:YES];
}
break;
default:
break;
}
我使用正確設置了ID-s的stroyboard。那麼在CSAppStateIdle中它可以工作,但是在CSAppStateSomeState中someView並沒有出現在屏幕上,但在某些VC viewDidLoad中,viewWillAppear甚至viewDidAppear被調用。
有沒有人遇到過這個,或知道解決方案?我感謝任何幫助,謝謝!
什麼是你想實現與'addChildViewController'方法調用? – pbasdf 2014-12-19 11:19:32
我試圖建立一個導航堆棧,所以當用戶從SomeView推「Back」按鈕並調用popViewController時,mainView就會出現。 – UNIQL 2014-12-19 11:33:55