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'
有什么建议吗?