【发布时间】:2018-04-03 04:10:06
【问题描述】:
我正在尝试在 tableview 和它的详细视图之间进行通信
请你检查一下我的方式并给我一些建议
所以,我将导航控制器嵌入到表格视图中
而且我没有使用tableview(_:didSelectedRowAt) 方法。
Stackoverflow 中的一些答案,他们说覆盖prepare(:) 方法并在tableview(_:didSelectedRowAt) 中编写performSegue(withIdentifier:) 方法
但是如果我像上面那样编写代码,则会显示两个屏幕。
(我认为是因为 segue 动作被触发了两次)
我只是将 segue 操作(推送)从表格视图单元格(朋友姓名单元格)拖放到详细视图
通过使用这个 segue 动作,我可以通过 prepare(:segue) 方法传递数据,以便在详细视图中编辑选定的朋友姓名
如果我从详细视图的文本字段中编辑朋友姓名,则会有edit 按钮触发展开转场
所以我在详细视图控制器中覆盖 prepare(:segue) 方法
并在 Table View 的 ViewController 中编写代码
@IBAction func getEditedNameFromDetailView(_ sender:UIStoryboardSegue){
if sender.source is DetailViewController {
if let senderVC = sender.source as? DetailViewController {
data[(self.someTableView.indexPathForSelectedRow?.row)!] = senderVC.editedData!
}
someTableView.reloadData()
}
}
这是传达表格视图及其详细视图的正确方式吗?
【问题讨论】:
标签: ios swift uitableview segue