0

我想允許用戶在他的電子郵件中打開我的應用程序中的圖像。我已經在app delegate中設置瞭如下功能來導航到我的settingsTableViewController。 settingsTableViewController是一個navigationController,它是一個tabBarViewController。打開ViewController(這是一個tabBarController內的navigationController)並運行功能

func application(app: UIApplication, openURL url: NSURL, 
    options: [String : AnyObject]) -> Bool { 


    self.window!.visibleViewController 
    goToSecond() 


    return true 
} 

func goToSecond() { 
     let tabBarController: UITabBarController = (self.window?.rootViewController as? UITabBarController)! 
     tabBarController.selectedIndex = 3 

} 

我用來做上述工作擴展爲:

public extension UIWindow { 
public var visibleViewController: UIViewController? { 
    return UIWindow.getVisibleViewControllerFrom(self.rootViewController) 
} 

public static func getVisibleViewControllerFrom(vc: UIViewController?) -> UIViewController? { 
    if let nc = vc as? UINavigationController { 
     return UIWindow.getVisibleViewControllerFrom(nc.visibleViewController) 
    } else if let tc = vc as? UITabBarController { 
     return UIWindow.getVisibleViewControllerFrom(tc.selectedViewController) 
    } else { 
     if let pvc = vc?.presentedViewController { 
      return UIWindow.getVisibleViewControllerFrom(pvc) 
     } else { 
      return vc 
     } 
    } 
} 
} 

上述工作,直到我加入我的代碼的URL傳遞給settingsTableViewController如下:

let vc = self.window?.rootViewController as! SettingsTableViewController 
    vc.displayImage(url) 

我收到以下錯誤:

Could not cast value of type '.TabBarController' (0x100161c00) to '.SettingsTableViewController' 

有什麼建議嗎?

回答

0

你的錯誤告訴你到底是什麼問題。 RVC實際上是TabBarController,而不是您的SettingsTableViewController。這意味着您需要訪問TabBarController的陣列,直到您到達SettingsTableViewController

相關問題