Swift PrepareForSegue不在两个TableView控制器之间发送数据
我试图将测试变量传递给目标控制器,但测试失败 我的绩效考核在这里完成:Swift PrepareForSegue不在两个TableView控制器之间发送数据,swift,swift3,Swift,Swift3,我试图将测试变量传递给目标控制器,但测试失败 我的绩效考核在这里完成: override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { programKeySegue = programKeys[indexPath.section] self.performSegue(withIdentifier: "segueSelectedProgram", s
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
programKeySegue = programKeys[indexPath.section]
self.performSegue(withIdentifier: "segueSelectedProgram", sender: self)
}
我的备考:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "segueSelectedProgam" {
let selectedProgramVC = segue.destination as! SelectedProgramTableViewController
selectedProgramVC.programKey = "test" //programKeySegue
}
}
在目标控制器中:
var programKey: String?
但是当我在viewDidLoad中打印(programKey)时,会将“nil”打印到控制台。我以前用过这种方法,而且一直效果很好。谁能告诉我我做错了什么
我厌倦了从prepare for segue中删除覆盖,我尝试将self附加到performsgue,并尝试分配要传递的不同变量。没有任何效果。如评论中所述,您的问题是由打字错误引起的。您可以通过不使用字符串比较来防止将来出现这种情况
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// If there are multiple segues to this destination, you can
// perform a similar check on the source
if let selectedProgramVC = segue.destination as? SelectedProgramTableViewController
selectedProgramVC.programKey = "test" //programKeySegue
}
}
此外,您可以在情节提要中使用视图控制器名称作为序列名称,然后
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
programKeySegue = programKeys[indexPath.section]
self.performSegue(withIdentifier: String(describing: SelectedProgramTableViewController .self), sender: self)
}
等等,瞧,没有线 在您的
prepareForSegue
中,您的序列标识符有一个输入错误。谢谢!虽然我觉得自己很蠢,但它现在起作用了。哈哈,不客气,我会投票结束这个问题,因为它不再重复。