我想允许用户通过电子邮件在我的应用中打开图片。我在app delegate中设置了如下函数,以导航到我的settingsTableViewController。 settingsTableViewController是一个navigationController,它是一个tabBarViewController。
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 :(得分:0)
您的错误确切地告诉您问题所在。 RVC实际上是YOUR_GRAPHICS_ITEM.setZValue(std::numeric_limits<qreal>::max());
,而不是您的TabBarController
。这意味着您需要访问SettingsTableViewController
的{{1}}数组,直至到达TabBarController