Swift xCode 6.4 - 使用由第二个视图控制器中的tableview控制器生成的变量

时间:2015-09-15 16:24:08

标签: ios swift variables viewcontroller

我正在谷歌搜索一整天可能是一个简单的问题,但我没有把它弄好。希望有人可以帮助我。

我有一个tableview控制器,其中一个原型单元包含三个自定义标签。 当我运行应用程序时,表视图控制器将生成大约150个tableview单元格,其内容从csv文件解析。

当我点击其中一个单元格时,用户将被转发两个第二个视图控制器,显示一些额外的信息文本用于他的单元格选择。 在用户点击tabelview单元的同时,变量将更新为相应的tableview-row-number(例如,最后一个tableview单元格为150)。 现在我想在第二个视图控制器中显示的文本中使用此变量作为参考文本。

tableview控制器中的变量是“rowSelectedFromList”,将由以下代码设置:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    var rowSelectedFromList: String

    rowSelectedFromList = rowOfItems[indexPath.row].customlabel3!
    println(rowSelectedFromList)
}

“println”仅用于检查它是否正常工作。

问题是如何在第二个视图控制器中使用变量“rowSelectedFromList”?

感谢您的帮助,谢谢!

4 个答案:

答案 0 :(得分:1)

您希望在prepareForSegue中添加内容以及在第二个视图控制器中添加变量。所以在你的表视图控制器中:

var variableToPass: String!

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    variableToPass = rowOfItems[indexPath.row].customlabel3!.text
    performSegueWithIdentifier("SecondControllerSegue", sender: nil)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "SecondControllerSegue" {
        let destinationController = segue.destinationViewController as! SecondViewController
        destinationController.passedVariable = variableToPass
    } 
}

在第二个视图控制器中,您将要添加值将传递给的变量:

var passedVariable: String!

当然,您可以选择将变量替换为您希望发送的任何类型:)

答案 1 :(得分:1)

您可以在onClickListener中添加自定义逻辑,如下所示:

prepareForSegue

用第二个视图控制器的类名替换YourSecondController。

不要忘记为您的UITableView创建IBOutlet并将其命名为override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if let controller = segue.destinationViewController as? YourSecondController, indexPath = tableView.indexPathForSelectedRow() { controller.someVariable = rowOfItems[indexPath.row].customlabel3! } }

答案 2 :(得分:0)

好问题,如果你想要排序这个问题,请按照下面的代码:

id='id1'

答案 3 :(得分:0)

为我工作的代码是Phoen1xUK和glyuck答案的混合物。 我把它们放在一起并最终得到了这个工作版本:

对于FirstViewController:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "SecondControllerSegue" {
        if let indexPath = self.tableView.indexPathForSelectedRow() {
          let rowSelectedFromList = rowOfItems[indexPath.row].customlabel3
          (segue.destinationViewController as! SecondViewController).rowTransferedFromList = rowSelectedFromList
        }
    }
}

在SecondViewController中,我按如下方式设置变量:

var rowTransferedFromList: String!