Ios Swift:字符串值未从tableView传递到其他视图
我试图做的是在我的表视图控制器中捕获单元格的textLabel.text,并将其传递给另一个视图中的标签。经过大量研究,以下是我到目前为止的情况: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)!")
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。谢谢