微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在弹出视图控制器快速故事板解除后更新 tableView

如何解决在弹出视图控制器快速故事板解除后更新 tableView

我有一个 tableview,它是一个足球比赛列表。在我的导航中,我有一个“加”号,我可以在其中添加新的匹配项。这显示一个弹出框,它工作得非常好。虽然当我使用 dismiss(animated: true,completion: nil) 并将更改应用到我的数据库。 tableview 不会更新,我必须更改应用程序中的页面,以使其更新。 '

是否有任何建议在显示弹出窗口后更新我的 tableview?我曾尝试更新 viewDidAppear

中的 tableview

解决方法

当你当时关闭你的 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()
        }
    }
}
,

如果您想从核心数据数据库重新加载数据

我不知道您使用的是什么数据库,但我认为它是核心数据

如果是这样:

  1. create un Unwind Segue(控制将您用来关闭控制器的按钮拖动到控制器右上角的退出图标,并为其指定一个标识符)。

  2. 将此代码添加到您的 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 举报,一经查实,本站将立刻删除。