2017-07-19 53 views
0

我試圖實現navegationController編程viewcontrollers之間進行切換:的iOS:無法投類型NextViewContrller的價值UINavigationController的

enter image description here

@IBAction func next(_ sender: Any) { 
     self.performSegue(withIdentifier: "next", sender: self) 

    } 

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "next"{ 
      let destNVC = segue.destination as! UINavigationController 
      let next = destNVC.topViewController as! NextViewController 
      next.title = "next!" 
     } 
    } 

但我發現了這個錯誤:

Could not cast value of type 'myProject.NextViewController' (0x108de5338) to 'UINavigationController' (0x10aa2d4a8). 

enter image description here

你們誰都知道我爲什麼會遇到這個錯誤?

我真的很感謝你的幫助。

回答

1

我假設屏幕截圖中顯示的最右邊的VC是你的NextViewController

在這種情況下我們來看看segue.destination是什麼。很容易找到什麼segue.destination引用。看看你的故事板,找到你想要的遊戲,然後用箭頭找到遊戲的結尾。無論箭頭指向的VC是segue.destination。 (segue的另一端是segue.source btw)

現在我們知道了這一點,我們知道segue.destination在這種情況下必須參考NextViewController。現在你應該明白,這條線應該予以糾正:

let destNVC = segue.destination as! UINavigationController 

嘛,試圖蒙上了NextViewControllerUINavigationController肯定會導致一個錯誤,不是嗎?

實際上,您可以將segue.destination轉換爲NextViewController

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "next"{ 
     let next = segue.destination as! NextViewController 
     next.title = "next!" 
    } 
} 
相關問題