Ваша проблема в том, что всякий раз, когда вы возвращаетесь к предыдущему UIViewConntroller
экземпляру PredictorTableViewController
, он удаляется из памяти, поэтому все связанные с ним данные также удаляются (массив grandPrix
).
Я могу предложить вам 3 решения:
<Ч />
ПЕРВЫЙ
Сохраните ваш массив grandPrix
в родительском UIViewController
и передайте его в PredictorTableViewController
, когда segue выполняется следующим образом:
var grandPrix = [GrandPrix]()
...
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "getPredictor" {
let predictorVC = segue.destination as! UINavigationController
let vc = predictorVC.topViewController as! PredictorTableViewController
// append new GrandPrix to local array
self.grandPrix.append(GrandPrix(granPrix: TrackTextField.text!, firstDriver: firstTextField.text!, secondDriver: secondTextField.text!, thirdDriver: thirdTextField.text!))
// important part: pass local data to destination
vc.grandPrix = self.grandPrix
}
}
<Ч />
ВТОРОЙ
Сохраните PredictorTableViewController
в качестве строгой ссылки в родительском UIViewCointroller
и вручную нажмите PredictorTableViewController
на UINavigationController
, когда вам это нужно.
// Strong lazy reference
lazy var predicatorController: PredicatorTableViewController = {
// If needed, this can be loaded from a NIB or Storyboard
return PredicatorTableViewController()
}()
Для использования этого вызова следующая UINavigationController
функция:
// generate new data for predicatorController and append it to grandPrix array
predicatorController.grandPrix.append(...)
// show predicatorController
self.navigationController?.pushViewController(predicatorController, animated: true)
P.S. с этими решениями НЕ используйте segues.
<Ч />
ТРЕТИЙ
Та же идея, что и в первом предложении, но данные массива grandPrix
будут храниться в локальном кэше (например, база данных CoreData). Вам нужно будет написать функции извлечения / хранения данных локального кэша и использовать их соответственно, когда вам нужно получить доступ к существующим и сохранить новые объекты GrandPrix в вашем локальном кэше.
<Ч />
Удачи:)