Ios Swift:字符串值未从tableView传递到其他视图

Ios Swift:字符串值未从tableView传递到其他视图,ios,swift,Ios,Swift,我试图做的是在我的表视图控制器中捕获单元格的textLabel.text,并将其传递给另一个视图中的标签。经过大量研究,以下是我到目前为止的情况: var valueToPass:String! override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { println("You selected cell #\(indexPath.row)!")

我试图做的是在我的表视图控制器中捕获单元格的textLabel.text,并将其传递给另一个视图中的标签。经过大量研究,以下是我到目前为止的情况:

var valueToPass:String!

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    println("You selected cell #\(indexPath.row)!")

    // Get Cell Label
    let indexPath = tableView.indexPathForSelectedRow();
    let currentCell = tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell!;

    valueToPass = currentCell.textLabel!.text
    println("\(valueToPass) is captured")
    performSegueWithIdentifier("theSegue", sender: self)

}



override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if (segue.identifier == "theSegue") {


        var viewController = segue.destinationViewController as FinalView

        viewController.resto = valueToPass
    }

}
下面是FinalView的代码,变量“resto”就在这里:

class FinalView: UIViewController{

  var resto:String!

  override func viewDidLoad() {
      super.viewDidLoad()
      println("the restoname is: \(resto)")
      restoLabel.text = resto

}


     @IBOutlet var restoLabel: UILabel!

}
但当我检查是否一切正常时,这是我的println语句的结果:

the restoname is: nil
You selected cell #13!
Tanad Thai is captured

为什么字符串“Tanad Thai”在FinalView类中没有传递给“rest”?我真的很感激能得到的一切帮助

您在检测代码方面做得非常出色,但您需要思考您学到了什么。查看仪器的输出:

the restoname is: nil
You selected cell #13!
Tanad Thai is captured
该输出证明FinalView的viewDidLoad是在调用表视图控制器的DidSelectRowatingIndexPath:之前被调用的。因此,您不能使用didselectRowatinexPath:设置viewDidLoad所依赖的值!你需要找个早一点的时间。就个人而言,我建议在prepareForSegue中完成所有工作


另外,我有点担心您可能会执行两次segue-一次在故事板中,一次在代码中。如果已将segue设置为从故事板中的单元格发出,则无需调用PerformsgueWithIdentifier-它将被自动调用。

这样做了!我所做的只是移动我在didSelectRowAtIndexPath中的内容,并将其移动到preparedForSegue。还删除了performsguewithidentifier。谢谢