2016-04-15 22 views
0

這是我的代碼。我嘗試了幾種不同的方法,其中一些給了我視圖不在層次結構中的錯誤。我有多個故事板。我如何使用AppDelegate在另一個故事板中打開另一個ViewController? (塞格)

下面的代碼片段進去別人的正確的,但不能執行SEGUE或presentViewController

func applicationDidTimout(notification: NSNotification) { 
    if let vc = self.window?.rootViewController as? UINavigationController { 
     if let myTableViewController = vc.visibleViewController as? AccountsOverviewViewController { 
      // Call a function defined in your view controller. 
      myTableViewController.signOffUser() 
     } else { 
      // We are not on the main view controller. Here, you could segue to the desired class. 
      let storyboard = UIStoryboard(name: "Accounts", bundle: nil) 
      let vc = storyboard.instantiateViewControllerWithIdentifier("AccountsNavigationController") as UIViewController 
      let vc2 = getVisibleViewController(nil) 
      vc2?.presentViewController(vc, animated: true, completion: nil) 

     } 
    } 
} 

func getVisibleViewController(var rootViewController: UIViewController?) -> UIViewController? { 

    if rootViewController == nil { 
     rootViewController = UIApplication.sharedApplication().keyWindow?.rootViewController 
    } 

    if rootViewController?.presentedViewController == nil { 
     return rootViewController 
    } 

    if let presented = rootViewController?.presentedViewController { 
     if presented.isKindOfClass(UINavigationController) { 
      let navigationController = presented as! UINavigationController 
      return navigationController.viewControllers.last! 
     } 

     if presented.isKindOfClass(UITabBarController) { 
      let tabBarController = presented as! UITabBarController 
      return tabBarController.selectedViewController! 
     } 

     return getVisibleViewController(presented) 
    } 
    return nil 
} 
+0

故事板的引用,他們像UILabel這樣的右側對象,您可以鏈接segues或從代碼中調用它們 –

回答

1

使用下面的FUNC來獲得可見視圖控制器,

func getVisibleVC() -> UIViewController? { 
    if var visibleVC = window?.rootViewController { 
    while let presentedVC = visibleVC.presentedViewController { 
     visibleVC = presentedVC 
    } 
    return visibleVC 
    } 
    return nil 
} 
+0

只是爲了記錄:這在OSX中不起作用,您將不得不使用ivar手動進行連線。 –

+0

謝謝你的問題是我無法得到我的VisibleVC –

相關問題