更新一个变量以获得 unlight segue (swift)



我正在尝试使用展开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
    }

最新更新