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 для создания родительско-дочерних отношений между двумя контроллерами представления.