Как правильно получить доступ к дочернему контроллеру представления - PullRequest
0 голосов
/ 27 октября 2018

У меня есть UIViewController внутри представления контейнера на моем главном контроллере представления. Я пытаюсь скрыть дочерний контроллер представления и выполнить функцию для дочернего представления, но я не знаю, как правильно получить к нему доступ.

Я пробовал это:

let ChildVC = children.first as! ChildView
ChildVC.RunFunction()

Но это не работает, так как у меня несколько дочерних представлений.

 let ChildVC = storyboard?.instantiateViewController(withIdentifier: "Child") as! ChildView
 ChildVC.RunFunction()

Затем я попробовал это, но когда выполняется функция RunFunction (), она выдает много ошибок, говорящих о том, что внутри нее ноль. (Ошибка не в функции run, так как она работает нормально при доступе через метод children.first)

Как указать точный childViewController без использования метода children [1] (или какого-либо другого номера childViewController)?

Любая помощь будет высоко ценится!

1 Ответ

0 голосов
/ 27 октября 2018

Поскольку вы упоминаете «контейнерное представление», я предполагаю, что вы вызываете дочерний контроллер представления с помощью встроенного перехода.

В этом случае следует реализовать метод prepare(for:sender), который сохраняет указатель на дочерний элемент:

Дайте родительскому контроллеру представления переменную экземпляра:

var childView: ChildView?

И затем в вашем prepare(for:sender) методе

func prepare(for segue: NSStoryboardSegue, sender: Any?) {
   if let dest = segue.destination as? ChildView {
       childView = dest
   }
}

Затем, когда вам нужно отправить сообщения в childView:

childView?.runFunction()

(имена методов должны начинаться с строчных букв)

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