0

如果用戶由於某種原因退出應用程序,我正在構建具有不同狀態的應用程序,這些狀態需要恢復。這意味着,當應用程序啓動時,不同的屏幕/視圖控制器需要位於導航堆棧之上。爲了達到這個目的,我試圖以編程方式構建視圖控制器,如下所示:儘管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被調用。

有沒有人遇到過這個,或知道解決方案?我感謝任何幫助,謝謝!

+0

什麼是你想實現與'addChildViewController'方法調用? – pbasdf 2014-12-19 11:19:32

+0

我試圖建立一個導航堆棧,所以當用戶從SomeView推「Back」按鈕並調用popViewController時,mainView就會出現。 – UNIQL 2014-12-19 11:33:55

回答

0

爲了把兩個項目導航堆棧上,使用setViewControllers:animated:方法,傳遞一個陣列,這兩個項目:

 case CSAppStateSomeState: 
     { 
      MainVC* mainView = [storyboard instantiateViewControllerWithIdentifier:@"MainVC"]; 
      SomeVC* someView = [storyboard instantiateViewControllerWithIdentifier:@"SomeVC"]; 
      [(UINavigationController *)self.window.rootViewController setViewControllers:@[mainView, someView] animated:YES]; 
     } 
+0

該解決方案有效,但導航欄從VC-s消失,不知道爲什麼。 – UNIQL 2014-12-19 11:54:35

+0

'navigationBarHidden'設置爲true? – pbasdf 2014-12-19 12:10:27

+0

嗯,我把它設置在rootVC的viewDidLoad中,並希望它沒問題,但在我看來,我需要在每個VC的viewDidLoad中設置它。你對這個案子有什麼建議嗎?感謝您的幫助! – UNIQL 2014-12-19 12:16:52

相關問題