Доступ к содержимому дочернего объекта в контейнере доступа
Чего я хочу достичь:
Пользователь нажимает кнопку в ViewController, тогда цвет кнопки, помещенной в контейнер, должен изменить цвет на красный.
Как я могу получить доступ к кнопке, помещенной в виде контейнера, из ViewController?
Ответ 1
Шаг за шагом:
Назовите segue между вашим контроллером представления и контроллером контейнера.
Добавить свойство в контроллер вашего вида, который будет содержать контроллер представления контейнера.
В вашем представлении контроллер реализует метод prepareForSegue(_:sender:).
В методе проверьте, соответствует ли segue.identifier идентификатор, указанный на шаге 1.
Если значение true, сохраните segue.destinationViewController в свой ресурс с шага 2.
Теперь у вас есть контроллер контейнера, хранящийся в вашем свойстве, чтобы вы могли выполнить настройку из своего класса. Вы должны иметь контроллер вида, хранящийся в viewDidLoad() уже.
Пример:
var containerViewController: YourContainerViewControllerClass?
let containerSegueName = "testSegue"
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == containerSegueName {
containerViewController = segue.destinationViewController as? YourContainerViewControllerClass
}
}
Ответ 2
Я рекомендую не полагаться на segue.identifier, а скорее на тип destination: