从TableViewController传递变量到TableViewController

时间:2016-02-04 14:51:19

标签: swift uitableview segue

在我正在进行的当前项目中,我需要将变量从视图传输到视图。 我成功地将一个变量从tableviewcontroller转移到这样的UIviewcontroller。

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
        }

我收到错误说

“无法转换类型list2.answersTableViewController的值”

所以问题是,如何将变量从UITableViewController传递到UITableViewController?

这是我的故事板。 Storyboard

2 个答案:

答案 0 :(得分: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  }

答案 1 :(得分:0)

这是因为在你的故事板中第二个UITableViewController没有自己的UINavigationController。试试这个:

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