2016-02-04 43 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 
} 
相关问题