我正在尝试使用展开Segue更新先前表视图上的UILabel。我有一切工作,除了每次我在模态上选择某些内容时都会带回空白文本。我基本上是带回我正在创建的变量(myName)的"。
但是,我想既然我正在更新我的didSelectRowAtIndex中的变量,我会把它带回来。我确实检查了在选择模态时是否获得了值,我是。所以我认为这就像更新变量 myName 一样简单。
NewTableViewController (Modal):
var myName = ""
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let row = Int(indexPath.row)
var selectedObject = objects[row] as! PFObject
var selectedName = selectedObject["myName"] as! String
myName = selectedName as String
println(myName)
}
表视图控制器(源视图控制器):
@IBAction func unwindName(segue: UIStoryboardSegue) {
println("unwind working")
if let svc = segue.sourceViewController as? NewTableViewController {
self.myNameLabel.text = svc.myName
println(myNameLabel)
}
}
当你从单元格调用 segue(展开或任何其他类型)时,segue 将在调用 didSelectRowAtIndexPath 之前执行,所以你不应该在那里设置你的变量值(事实上你根本不需要实现那个方法)。您应该在源视图控制器中实现 prepareForSegue,并在那里设置变量的值。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let cell = sender as! UITableViewCell
let indexPath = self.tableView.indexPathForCell(cell)
var selectedObject = objects[indexPath.row] as! PFObject
var selectedName = selectedObject["myName"] as! String
myName = selectedName as String
}