我正在嘗試將Swift iOS應用程序轉換爲Swift 2.我設法刪除了編譯器錯誤(從stackoverflow獲得了一些很大的幫助)但是一旦編譯完成,我遇到了應用程序的問題。我的應用程序有一個tabBarController與3個選項卡。當我選擇第二個選項卡時,該應用程序現在會因'SIGABRT'錯誤而崩潰。Swift - 無法將'UINavigationController'類型的值轉換爲'MapViewController'
我得到的錯誤:
Could not cast value of type 'UINavigationController' (0x106fbd588) to 'FlightTracker.MapViewController' (0x105722430)
對於下面的代碼:
let mapviewcontroller = self.tabBarController?.viewControllers?[0] as! MapViewController
爲何不能投的控制器作爲一個MapViewController?我是有這樣的工作之前的iOS 9 &斯威夫特2.
因爲,正如消息所言,標籤欄控制器的視圖控制器陣列中的第一個視圖控制器是導航控制器,而不是地圖視圖控制器。既然你提到了第二個標籤,也許你想'viewControllers?[1]'不''[0]'? – Paulw11
這仍然給我:'不能將類型'UINavigationController'(0x10661d588)的值轉換爲'FlightTracker.MapViewController'(0x104d82430)'。在使用'[0]'索引進行更新之前,我的應用程序完美工作。如果它自己改變了,我會感到驚訝。 – user3185748
好的,那只是一個猜測,因爲我無法看到你的代碼和應用程序的結構。我能告訴你的是,你的標籤欄的viewController數組包含UINavigationControllers而不是MapViewController。 – Paulw11