2016-04-27 65 views
1

當APP正在啓動時 - 啓動SigninView - 它是Okey。接下來如果成功 - 我需要showTripController()。功能工作但沒有顯示?什麼是問題?從AppDelegate顯示兩個ViewController

func showSigninView() { 
    let controller = self.window?.rootViewController!.storyboard?.instantiateViewControllerWithIdentifier("DRVAuthorizationViewController") 
    self.window?.rootViewController!.presentViewController(controller!, animated: true, completion: nil) 
} 

func showTripController() { 
    let cv = self.window?.rootViewController!.storyboard?.instantiateViewControllerWithIdentifier("DRVTripTableViewController") 
    let nc = UINavigationController() 
    self.window?.rootViewController!.presentViewController(nc, animated:true, completion: nil) 
    nc.pushViewController(cv!, animated: true); 
} 

回答

0

首先,你必須在使用的窗口前補充一點:

self.window.makeKeyAndVisible() 

另一件事要記住的是:

有時keyWindow可能已被取代窗口爲零RootViewController的(在iPhone上顯示UIAlertViews,UIActionSheets等),在這種情況下,您應該使用UIView的窗口屬性。

所以,而是採用RootViewController的,使用由它提供的最上面的一個:

extension UIApplication { 
    class func topViewController(base: UIViewController? = UIApplication.sharedApplication().keyWindow?.rootViewController) -> UIViewController? { 
     if let nav = base as? UINavigationController { 
      return topViewController(base: nav.visibleViewController) 
     } 
     if let tab = base as? UITabBarController { 
      if let selected = tab.selectedViewController { 
       return topViewController(base: selected) 
      } 
     } 
     if let presented = base?.presentedViewController { 
      return topViewController(base: presented) 
     } 
     return base 
    } 
} 

if let topController = UIApplication.topViewController() { 
    topController.presentViewController(vc, animated: true, completion: nil) 
} 
0

最後3行showTripController的替換如下:

let nc = UINavigationController(rootViewController: cv)); 
self.window!.rootViewController = nc 
+0

感謝,RLY幫助。 –

相關問題