Как передать данные между несколькими (в моей настройке 3) ViewControllers? - PullRequest
0 голосов
/ 15 ноября 2018

enter image description here enter image description here

Я хочу создать приложение Flashcards, и поведение на CoursesVC позволяет добавлять курсы и нажимать на них. Затем он получает список с карточками. Там он может добавить больше карточек. Хранилище управляется CoreData. Когда он щелкает по ячейке, я передаю данные в список карточек с prepareForSegue. Чтобы добавить карту памяти, я имел в виду ту же идею, но это было невозможно, поскольку переменная из второго контроллера представления не была инициализирована при создании prepareForSegue. Вопрос: Как я могу передать NSManagedObject от первого ViewController до третьего ViewController соответствующим образом? (некрасиво было бы позволить представлению визуализироваться перед созданием prepareForSegue)

Разница в вопросах типа «как передавать данные между ViewControllers» заключается в том, что у меня есть три ViewControllers. Это не будет работать с использованием prepareForSegue на первом и на втором контроллере представления, потому что, когда создается prepareForSegue, переменная во втором VC еще не определена, потому что представление еще не инициализировано! Имейте в виду, что переход от второго к третьему контроллеру представления "Представлен Модально" как "Лист страницы"!

1 Ответ

0 голосов
/ 16 ноября 2018

Это решение в основном: Swift: prepareForSegue с контроллером навигации

Проблема заключалась в том, что контроллер третьего вида встроен в качестве контроллера навигации.По этой причине prepareForSegue отличается.

Решение состоит в том, чтобы использовать следующий prepareForSegue во втором VC:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let navigationVC = segue.destination as? UINavigationController, let myViewController = navigationVC.topViewController as? DViewController {
        myViewController.currentCourse = self.currentCourse
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...