viewWIllTransition не вызывается более чем в одном контроллере

Я учусь разрабатывать приложение для iOS, и в настоящее время у меня есть 4 контроллера представления.

В первом viewController я использовал метод viewWillTransition для настройки пользовательского интерфейса во время выполнения.

Снова в 4-м ViewController я пытаюсь использовать метод viewWillTransition, но он там не вызывается.

И когда я прокомментировал метод (viewWillTransition) в первом контроллере, он волшебным образом начал работать в четвертом viewController. Поэтому я пришел к выводу, что viewWillTransition может быть реализован только в одном viewController. Но мне нужно использовать его в нескольких местах.

Что обходится? Как я могу это исправить? Я использую Swift4 и Xcode9.

1 ответ

Решение

Просто отправлю мой комментарий как ответ,

Вы должны позвонить super где-то в реализации вашего viewWillTransition(to: with:), Обычно это первая строка.

Это должно выглядеть примерно так:

super.viewWillTransition(to: size, with: coordinator)

Это позволит суперпредставлению передавать этот класс метода всем его подпредставлениям. Так что если у вас есть UIViewController внутри UITabBarControllerвызов этого метода в super позволит всем другим вкладкам получать вызов этого метода.

Также - при использовании настраиваемого containerViewController с дочерними viewControllers?

Если вы добавили представление дочернего viewController к родительскому viewController в качестве подпредставления, вы должны вызвать .addChild(_:) в родительском viewController для создания родительско-дочерних отношений между двумя контроллерами представления.

Другие вопросы по тегам