подключить переход к навигационному управлению - PullRequest
0 голосов
/ 18 марта 2019

Раньше я использовал Segue для передачи данных между контроллерами.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "Edit List" {
        if let currentTodo = todoReadyForEditing, let editControler = segue.destination as? ListPageController {
            editList.prepare(for: currentList)
        }

Теперь план изменился. Я должен перенести данные с контроллеров первого вида на tableViewController.Поскольку я хочу, чтобы на странице tableViewController была панель навигации, я добавил navigationBarController перед ней.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "Edit List" {
        if let currentTodo = todoReadyForEditing, let editControler = segue.destination as? ListTableViewController {
            editList.prepare(for: currentList)
        }

Проблема в том, что когда я подключил segue напрямую к UITableViewController, все работает, как и раньше, у меня есть два контроллера представления, но панель навигации скрыта, чего я не хочу.Когда я читаю, по-видимому, мне сначала нужно подключить segue к navigationViewController, но когда я этого не сделал, данные не будут переданы в контроллер табличного представления.

Есть какие-нибудь предложения?Заранее спасибо за помощь

1 Ответ

1 голос
/ 18 марта 2019

Назначение segue - UINavigationController, но вы можете работать с его свойством topViewController, которое является вашим контроллером

guard let navCon = segue.destination as? UINavigationController, 
      let controller = navCon.topViewController as? ListTableViewController else { fatalError("Segue wasn’t set right") }

В любом случае, я бы посоветовал вам не использовать сегменты и создавать свой UINavigationController со встроенным контроллером программно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...