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'
有什麼建議嗎?