Подтвердить что ты не робот

Доступ к содержимому дочернего объекта в контейнере доступа

Чего я хочу достичь:

Пользователь нажимает кнопку в ViewController, тогда цвет кнопки, помещенной в контейнер, должен изменить цвет на красный.

Как я могу получить доступ к кнопке, помещенной в виде контейнера, из ViewController?

введите описание изображения здесь

4b9b3361

Ответ 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:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    super.prepare(for: segue, sender: sender)

    if let vc = segue.destination as? YourViewController {
        vc.someVariable = true
    }
}

Таким образом, вы избегаете ошибок с именем с ошибкой с ошибкой.