如何解决在弹出视图控制器快速故事板解除后更新 tableView
我有一个 tableview,它是一个足球比赛列表。在我的导航中,我有一个“加”号,我可以在其中添加新的匹配项。这显示为一个弹出框,它工作得非常好。虽然当我使用
dismiss(animated: true,completion: nil)
并将更改应用到我的数据库。
tableview 不会更新,我必须更改应用程序中的页面,以使其更新。 '
是否有任何建议在显示弹出窗口后更新我的 tableview?我曾尝试更新 viewDidAppear
解决方法
当你当时关闭你的 popover 控制器时,检查哪个正在呈现视图控制器,如果它是你的 VC 和你想要重新加载的 tableview,然后在你的 popoverVC 的 viewWillDisappear 方法中重新加载你的 tableview
class PopOverViewController {
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
if let tableVC = presentingViewController as? TableViewController {
DispatchQueue.main.async {
tableVC.tableView.reloadData()
}
}
}
,
如果您想从核心数据数据库重新加载数据
我不知道您使用的是什么数据库,但我认为它是核心数据
如果是这样:
-
create un Unwind Segue(控制将您用来关闭控制器的按钮拖动到控制器右上角的退出图标,并为其指定一个标识符)。
-
将此代码添加到您的 tableview 控制器和 popoverController
代码如下:
March 2021
和
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
}
}
所以当你按下按钮关闭时,它会触发 unwind segue,首先通过覆盖准备然后通过 unwind for segue。
pop viewController 中的准备部分可让您进行保存
tableviewController 中的 unwind 部分可让您检索数据
然后使用 didst 部分有效地重新加载
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。