Ios Swift-无法转换类型为';UINavigationController';至';MapViewController';
我目前正在尝试将我的Swift iOS应用程序转换为Swift 2。我已经设法消除了编译器错误(在stackoverflow的帮助下),但一旦现在编译了应用程序,我就遇到了问题。我的应用程序有一个带有3个选项卡的tabBarController。当我选择第二个选项卡时,应用程序现在崩溃,出现“SIGABRT”错误 我得到一个错误: 无法将“UINavigationController”(0x106fbd588)类型的值强制转换为“FlightTracker.MapViewController”(0x105722430) 对于以下代码:Ios Swift-无法转换类型为';UINavigationController';至';MapViewController';,ios,xcode,swift,swift2,Ios,Xcode,Swift,Swift2,我目前正在尝试将我的Swift iOS应用程序转换为Swift 2。我已经设法消除了编译器错误(在stackoverflow的帮助下),但一旦现在编译了应用程序,我就遇到了问题。我的应用程序有一个带有3个选项卡的tabBarController。当我选择第二个选项卡时,应用程序现在崩溃,出现“SIGABRT”错误 我得到一个错误: 无法将“UINavigationController”(0x106fbd588)类型的值强制转换为“FlightTracker.MapViewController”(
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.tabbar控制器?.viewControllers?[0]=>这是您的UINavigationController
在故事板上,您的tabBarController连接到NUINavigationControllerS,并且其中一个UINavigationController连接到您的MapViewController。因为,正如消息所述,选项卡栏控制器的视图控制器阵列中的第一个视图控制器是导航控制器,不是地图视图控制器。既然您提到了第二个选项卡,也许您想要
viewControllers?[1]
而不是[0]
?这仍然给了我:无法将类型为“UINavigationController”(0x10661d588)的值强制转换为“FlightTracker.MapViewController”(0x104d82430)
。在使用[0]
索引进行更新之前,我的应用程序运行良好。如果它自己改变了,我会很惊讶。好吧,这只是一个猜测,因为我看不出你的代码和应用程序是如何构造的。我可以告诉你的是,你的选项卡栏的viewController数组包含UINavigationController,而不是MapViewController。是的,我理解。但我究竟该如何在这个阵列中达到峰值来验证这些东西呢?我可以在应用程序使模拟器崩溃后执行此操作吗?您可以使用调试器。您可以设置断点和检查属性等等,但分析视图层次结构应该非常简单—您是如何设置的?使用故事板还是代码?当我更改索引时,仍然会得到:无法将类型为“UINavigationController”(0x111c2d588)的值强制转换为“FlightTracker.MapViewController”(0x110392430)
。正如我提到的,这个精确的索引在更新之前工作得很好,所以如果它改变了,我会感到惊讶?