我目前正在尝试将我的Swift iOS应用程序转换为Swift2。我设法消除了编译器错误(在stackoverflow的帮助下),但是一旦应用程序编译完成,我就会遇到问题。我的应用程序有一个带有3个选项卡的tabBarController。当我选择第二个选项卡时,该应用程序现在崩溃,并显示“SIGABRT”错误。
我得到错误:
无法将类型'UINavigationController'(0x106fbd588)的值强制转换为'FlightTracker.MapViewController'(0x105722430)
对于以下代码:
let mapviewcontroller = self.tabBarController?.viewControllers?[0] as! MapViewController
为什么不能将控制器转换为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
在情节提要板上,您的tabBarController已连接到 N UINavigationController S 和UINavigationController之一连接到MapViewController。
关于ios - Swift-无法将'UINavigationController'类型的值强制转换为'MapViewController',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34301221/