ios - 在弹出视图控制器快速故事板解除后更新 tableView
问题描述
我有一个 tableview,它是足球比赛的列表。在我的导航中,我有一个“加号”符号,我可以在其中添加新的匹配项。这是一个弹出窗口,它工作得很好。虽然当我使用
dismiss(animated: true, completion: nil)
并将更改应用于我的数据库时。表格视图没有更新,我必须更改应用程序中的页面才能使其更新。'
在显示弹出窗口后更新我的表格视图有什么建议吗?我试过更新表格视图viewDidAppear
解决方案
如果要从核心数据数据库重新加载数据
我不知道您使用的是什么数据库,但我认为它是核心数据
如果是这种情况:
创建 unwind Segue (控制拖动您用来关闭控制器的按钮到控制器右上角的退出图标,给它一个标识符)。
将此代码添加到您的 tableview 控制器和 popoverController
这是代码:
class TableViewController: UITableViewController {
var matches = [Match](){ //Core Data object
didSet {
OperationQueue.main.addOperation { //reloading after adding a new match (safe)
self.tableView.reloadData()
}
}
}
//...
//this unwind function executes after dismissing your popover controller
@IBAction func unwindToThemeList(sender: UIStoryboardSegue) {
matches = //... retreive your data
//this code works with var theme {didset} to make sure new matches are added
}
}
和
class popoverController: UIViewController {
//this section of code lets you do operations before dismissing the controller
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let identifier = segue.identifier else { return }
if identifier == TheNameYouGaveToYourIdentifier {
//Do your saves
}
}
因此,当您按下按钮关闭时,它将触发展开转场,首先通过覆盖准备然后通过展开转场。
pop viewController 中的 prepare 部分可让您进行保存
tableviewController 中的 unwind 部分可让您检索数据
然后有效地重新加载使用 didst 部分
推荐阅读
- reactjs - 用户注销时停止 Appstate 事件触发器
- kotlin - 如何制作菜单项(单个)重置按钮?
- mysql - 使用 JSON_CONTAINS 的 MySQL 查询
- css - 在 css 样式的组件中将按钮定位在另一个项目的顶部
- reactjs - 以 react-final-form 提交后,如何在输入更改时重置提交错误?
- vue.js - 在 for 循环中显示/隐藏元素
- visual-studio-code - 如何使用“Tab”键在 Visual Studio Code 中打开路径自动填充?
- linux - 我不明白为什么我在从时钟上看不到输出偏移?如何检查时钟同步?
- javascript - 延迟加载不使用 javascript 和 css 淡入淡出
- r - 如何使用 R 中的 rma 函数对两个不同变量的影响大小进行加权?