2016-02-04 45 views
0

在我正在處理的當前項目中,我需要將變量從視圖傳輸到視圖。 我成功地將一個變量從tableviewcontroller轉移到了像這樣的UIviewcontroller。從TableViewController傳輸變量到TableViewController

if segue.identifier == "Done" { 
      let nav = segue.destinationViewController as! UINavigationController 
      let transfer = nav.topViewController as! quizViewController 
      transfer.questionArrays = questions2 
     } 

但是,當我試圖給一個變量從tableviewcontroller轉移到的tableview控制器這樣,

if segue.identifier == "answerSegue" { 
      let nav = segue.destinationViewController as! UINavigationController 
      let transfer = nav.topViewController as! answersTableViewController 
      transfer.index = rowIndex 
     } 

我得到一個錯誤說

「無法投類型列表2的值。 answersTableViewController「

所以問題是,我怎樣才能將一個變量從UITableViewController傳遞給UITableViewController?

這是我的故事板。 Storyboard

+0

你能嘗試用清晰的原理圖告訴我們你的視圖層次嗎? – Eendje

+0

你確定「answerSegue」的目標控制器是一個導航控制器(它的根控制器是「answersTableViewController」嗎?) – ishaq

+0

看看你的截圖,不需要第二個'UINavigationController'。如果你沒有任何理由使用額外的導航控制器我建議你刪除它並使用下面提供的解決方案之一。 – Eendje

回答

1

首先,你投:

let transfer = nav.topViewController as! quizViewController 

然後你施放:

let transfer = nav.topViewController as! answersTableViewController 

這段代碼實際上是一個有點陌生,它是不可能找出沒有發佈更多細節。

通常情況下,您不通過UINavigationController訪問目標控制器。您只需執行如下操作:

let destinationController = segue.destinationViewController as! YourDestinationControllerClass 
destinationController.variable = value 

完全不需要涉及UINavigationController。

也許這會適用於你的情況? :

if segue.identifier == "answerSegue" { 
    let transfer = segue.destinationViewController as! answersTableViewController 
    transfer.index = rowIndex } 
0

這是因爲在你的故事板第二的UITableViewController沒有自己的UINavigationController的。試試這個:

if segue.identifier == "answerSegue" { 
    let transfer = segue.destinationViewController as! answersTableViewController 
    transfer.index = rowIndex 
} 
相關問題