如何返回上一场景并重新加载数据?

时间:2020-01-18 18:53:05

标签: swift core-data storyboard

我在情节提要板上有两个场景:一个场景用Bar上的加号按钮显示项目列表,转到另一个具有窗体的场景以添加新项目。我要保存在本地存储中,在保存功能中,我想使用新数据返回上一页。

这是保存功能:

   @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{

    }
}

1 个答案:

答案 0 :(得分:0)

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

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
}
相关问题