我目前正在尝试将我的 Swift iOS 应用程序转换为 Swift 2。我已经设法消除了编译器错误(在 stackoverflow 的帮助下),但是一旦应用程序现在编译,我就会遇到问题。我的应用程序有一个带有 3 个选项卡的 tabBarController。当我选择第二个选项卡时,应用程序现在崩溃并出现“SIGABRT”错误。
我得到错误:
Could not cast value of type 'UINavigationController' (0x106fbd588) to 'FlightTracker.MapViewController' (0x105722430)
对于下面的代码:
let mapviewcontroller = self.tabBarController?.viewControllers?[0] as! MapViewController
为什么它不能将 Controller 转换为 MapViewController?在 iOS 9 和 Swift 2 之前,我以这种方式工作。
最佳答案
它应该工作
let navigationController = self.tabBarController?.viewControllers?[0] as! UINavigationController //Check which is your tab on your storyboard, 0, 1, n ?
let mapviewcontroller = navigationController.viewControllers[0] as! MapViewController
self.tabBarController?.viewControllers?[0] => 这是你的 UINavigationController
在您的 Storyboard上,您的 tabBarController 连接到 N UINavigationControllerS 并且您的 UINavigationController 之一连接到您的 MapViewController。
关于ios - Swift - 无法将类型 'UINavigationController' 的值转换为 'MapViewController',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34301221/