我正在尝试使用 Unwinding Segue 更新先前 TableView 上的 UILabel。除了每次在我的模态上选择某些内容时我都会带回空白文本外,我一切正常。我实际上是在带回我正在创建的变量 (myName) 的“”。
但是,我想因为我正在更新我的 didSelectRowAtIndex 中的变量,所以我会把它带回来。我确实检查过在模态上选择时是否得到了一个值,我得到了。所以我认为这就像更新变量 myName 一样简单。
NewTableViewController(模态):
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)
}
TableViewController(源 View Controller ):
@IBAction func unwindName(segue: UIStoryboardSegue) {
println("unwind working")
if let svc = segue.sourceViewController as? NewTableViewController {
self.myNameLabel.text = svc.myName
println(myNameLabel)
}
}
最佳答案
当您从单元格调用转场(展开或任何其他类型)时,转场将在调用 didSelectRowAtIndexPath 之前执行,因此您不应该在那里设置变量值(实际上您不需要实现)方法)。您应该在源 View Controller 中实现 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
}
关于ios - 为 Unwind Segue 更新变量 (Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29922777/