2016-04-27 63 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帮助。 –

相关问题