iOS: передача данных в модальный VC, когда они помещены в контроллер навигации - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть VC, который я представляю модально, однако, что VC обернут в UINavigationController.Чтобы представить Navigation Controller, подключенный к моему VC, я добавил идентификатор в раскадровку и представляю, как показано ниже:

if let nvc = self.storyboard?.instantiateViewController(withIdentifier: "EditTaskNavController") {
   self.present(nvc, animated: true){
      success(true)
   }          
 }

Это хорошо.Проблема возникает, когда я пытаюсь передать данные в свой ВК.Поскольку nvc является контроллером навигации, я пытался получить vc с nvc.rootViewController, но я получаю ошибку: Value of type 'UIViewController' has no member 'rootViewController'.Если я распечатаю nvc, я вижу, что это на самом деле UINavigationController.Я предполагаю, что эта ошибка возникает из-за того, что я использовал instantiateViewController для получения контроллера навигации из раскадровки, но я запутался, почему он печатается как UINavigationController.

Я также пытался разыграть nvc as? TaskEditViewControllerно nvc - это контроллер навигации, а не vc, так что это не работает.

В конечном итоге я хочу передать данные на свой VC как таковой, прежде чем представить модально: vc.detail = "example"

Любые идеи, каксделать это?

1 Ответ

0 голосов
/ 02 декабря 2018

Вам нужно привести результат instantiateViewController к соответствующему типу, как к типу vc, для которого вы устанавливаете идентификатор в раскадровке, так как он возвращает универсальный объект типа UIViewController, поэтому приведите его к UINavigationController, то же самоеcase также относится к свойству topViewController, которое тоже нужно кастовать

if let nvc = self.storyboard?.instantiateViewController(withIdentifier: "EditTaskNavController") as? UINavigationController, let top = nvc.topViewController as? TaskEditViewController {
    top.someProperty = /* some value */

    self.present(nvc, animated: true) {
        /* some code */
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...