首页 > 解决方案 > 在弹出视图控制器快速故事板解除后更新 tableView

问题描述

我有一个 tableview,它是足球比赛的列表。在我的导航中,我有一个“加号”符号,我可以在其中添加新的匹配项。这是一个弹出窗口,它工作得很好。虽然当我使用 dismiss(animated: true, completion: nil)并将更改应用于我的数据库时。表格视图没有更新,我必须更改应用程序中的页面才能使其更新。'

在显示弹出窗口后更新我的表格视图有什么建议吗?我试过更新表格视图viewDidAppear

标签: iosswiftiphoneuitableview

解决方案


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

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

如果是这种情况:

  1. 创建 unwind Segue (控制拖动您用来关闭控制器的按钮到控制器右上角的退出图标,给它一个标识符)。

  2. 将此代码添加到您的 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 部分


推荐阅读