首页 > 解决方案 > 如何回到之前的场景并重新加载数据?

问题描述

我在 Storyboard 上有两个场景:一个在栏上显示带有加号按钮的项目列表,以转到另一个具有添加新项目的表单的场景。我正在本地存储上保存,在保存功能中,我想用新数据返回上一页。

这是保存功能:

   @IBAction func AddTrack(_ sender: Any) {

        let item = TrackItem(context: PersistenceService.context)
        item.kms = Int32(kmsField!.text!)!
        item.liters = Float(litersField!.text!)!
        item.date = textFieldPicker!.text!
        PersistenceService.saveContext()
        navigationController?.popViewController(animated: true)
        self.TrackList.append(item)
        self.tableView?.reloadData()
    }

知道我在 viewDidLoad() 和 viewDidAppear() 中使用了这个函数

func GetData(){
    let fetchRequest: NSFetchRequest<TrackItem> = NSFetchRequest<TrackItem>(entityName: "TrackItem")
    do{
      let TrackList = try PersistenceService.context.fetch(fetchRequest)
        self.TrackList = TrackList
        self.tableView?.reloadData()
    }catch{

    }
}

标签: swiftcore-datastoryboard

解决方案


您可以使用 NotificationCenter 或委托(取决于您要实现的目标)

通知中心示例:

VC1,拍照:

buttonTapped / function () {

        // Upload a Photo()

        NotificationCenter.default.post(name: NSNotification.Name(rawValue: "load"), object: nil)

        DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
            self.dismiss(animated: true, completion: nil)
            } 
        }

VC2,显示所有照片:

override func viewDidLoad() {
    super.viewDidLoad()

    NotificationCenter.default.addObserver(self, selector: #selector(loadList), name: NSNotification.Name(rawValue: "load"), object: nil)
}


@objc func loadList(notification: NSNotification) {
    //get data, reload data, etc
}

推荐阅读