将prepareForSegue用于表视图控制器

时间:2015-05-25 15:09:43

标签: ios swift

我有一个表视图控制器。我必须在此控制器内设置一个值。但我猜上面的代码只适用于视图控制器。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier! == "changeName" {
        if let destination = segue.destinationViewController as? NameSettingTableViewController {
            println("ok")
        }
    }
}

它没有打印" ok"调试。我认为因为NameSettingTableViewController不是视图控制器。 destination变量返回nil。我该如何解决这个问题?

故事板:http://prntscr.com/79846c

1 个答案:

答案 0 :(得分:1)

首先需要获取导航控制器,然后访问其topViewController属性以获取对NameSettingTableViewController的引用:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier! == "changeName" {
        if let destination = segue.destinationViewController as? UINavigationController {
            let destVC = destination.topViewController as! NameSettingTableViewController
            // set whatever variables on destVC
            println("ok")
        }
    }
}