【发布时间】:2017-09-12 16:35:52
【问题描述】:
我有一个嵌入了导航控制器的表格视图。我添加了一个 UIBarButtonItem(添加)按钮。当我单击此按钮时,它会打开一个新视图,用户在其中输入数据并提交它(这会进行 Web 服务调用)并返回到前一个视图。这种导航如下图所示,
func addTapped(_ sender:UIBarButtonItem) {
print("Called Add")
let vc = (storyboard?.instantiateViewController( withIdentifier: "newNote")) as! newNoteVC
self.navigationController?.pushViewController(vc, animated: true)
}
在新视图中我会关注,
@IBAction func saveButton(_ sender: UIButton) {
if (self.noteDescription.text?.isEmpty)! {
print("Enter missing note description")
return
} else {
let desc = self.noteDescription.text
self.uploadNote(noteText: desc!, noteDate: self.dateInMilliseconds)
self.navigationController?.popViewController(animated: true)
}
}
这样一条记录被保存,一个视图从导航控制器堆栈中弹出,但我唯一不知道的就是刷新父视图中的表视图数据(我可能需要创建一个新的 http 服务调用以读取所有记录)。
我希望我能够解释这个问题?任何帮助表示赞赏。
【问题讨论】:
-
您需要刷新 currentViewController 中的表格还是之前的表格?
-
我建议使用协议/委托模式将新注释传回您的
UITableViewController。见这里:stackoverflow.com/questions/30618172/… -
当您可以简单地将一条记录传回并将其添加到您的表格视图时,发出 http 请求以获取数据似乎有点矫枉过正
-
@Rainier,所以 controllerOne 是一个 tableviewcontroller,而 controllerTwo 是一个简单的视图控制器,用于添加新的 Note 信息并提交。这意味着 controllerOne 需要在 controllerTwo 成功返回之后进行刷新或重新加载。由于导航栏,用户只需单击后退按钮(箭头),这意味着无需刷新。但在成功“保存”后,我们必须刷新。
-
@toddg 这是一个很好的建议,并且可以无缝运行。谢谢。
标签: ios swift uitableview uinavigationcontroller