В результате наших комментариев давайте вместе с делегацией посмотрим, сможем ли мы решить вашу проблему:
Объявите протокол, вы можете сделать это в другом файле или в вашем ViewController
:
В этом протоколе есть метод выборки данных после добавления данных в FormulaViewController
protocol DataFetcherDelegate {
func fetchData()
}
class ViewController: UIViewController {
Тогда следуйте этому протоколу от вашего ViewController
:
class ViewController: UIViewController, DataFetcherDelegate {
После того, как вы согласитесь с протоколом, вам нужно будет внедрить метод fetchData
внутри ViewController
, здесь вы должны поместить запрос на выборку основных данных, чтобы получить обновленные данные:
func fetchData() {
print("fetchingData")
// write your data fetching code here, then make your arrays equal respectively again.
// once fetching and assigning data to arrays are complete do:
tableView.reloadData()
}
Теперь перейдите к FormulaViewController
и добавьте переменную delegate
, например:
class FormulaViewController: UIViewController {
var delegate: DataFetcherDelegate?
Вернитесь к ViewController
, тогда, когда бы вы ни создавали свой экземпляр FormulaViewController
(я получил код ниже из вашего комментария, вам нужно также преобразовать VC в FormulaViewController
, он немного обновлен, не используйте старый код) и присвойте ViewController
как delegate
из FormulaViewController
:
let vc = storyboard!.instantiateViewController(withIdentifier: "formulaView") as! FormulaViewController
vc.delegate = self // assigning self as delegate of FormulaVC
self.present(vc, animated: true, completion: nil)
Теперь мы закончили с ViewController
part, перейдем к FormulaViewController
и сделаем следующее:
Прежде чем вы отклоните ваш popupView после успешного сохранения новых данных, теперь мы скажем нашим delegate
(ViewController
), чтобы они снова загружали основные данные, затем мы отклоним FormulaViewController
:
//save your respective item to your core data, formula, time or step
// then for the sake of example, lets add a Formula:
let newFormula = Formula(/*with your core data context*/)
//save to your core data with context. like persistentContainer.viewContext.save(), I dont know how you implemented that.
delegate?.fetchData()
dismiss(animated: true, completion: nil)
Теперь, мы надеемся, что после отклонения FormulaViewController
данные ViewController
также будут обновлены.