Как вернуться на предыдущую сцену и перезагрузить данные? - PullRequest
1 голос
/ 18 января 2020

У меня есть две сцены на раскадровке: одна для отображения списка элементов с кнопкой плюс на панели для go другой сцены, которая имеет форму для добавления нового элемента. Я сохраняю в Local Storage, в функции сохранения я хочу вернуться на предыдущую страницу с новыми данными.

Это функция сохранения:

   @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 голосов
/ 18 января 2020

Вы можете использовать NotificationCenter или Delegation (Зависит от того, чего вы пытаетесь достичь)

Пример 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
}
...