viewWillTransitionToSize вызывает неправильный ViewController в TabBarController
У меня есть приложение tabBarController с 4 viewcontrollers. Это приложение поддерживает альбомную ориентацию, поэтому у меня есть viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id) координатор в каждом файле viewcontroller.m для управления изменениями ориентации.
Проблема, с которой я сталкиваюсь, заключается в том, что, когда я изменяю ориентацию устройства, когда в третьем контроллере представления вызывается viewWillTransitionToSize во втором контроллере представления, выполняется неправильный код.
Как это возможно, что viewWillTransitionToSize 2-го viewcontroller даже вызывается? Особенно, когда он еще не загружен. Я знаю, что он не был загружен, потому что я NSLog это viewDidLoad, и он показывает, когда я меняю ориентацию с 3-го viewcontroller.
Дополнительная информация: в 3-м viewWillTransitionToSize, viewWillAppear, viewWillDisappear и т. Д. Нет кода, который бы ссылался на 2-й контроллер вида.
Я использую Xcode 8.2.1 и код Objective-C. Пожалуйста, помогите, спасибо.
2 ответа
Тест, чтобы увидеть, какие UIViewController
выбран UIViewController
перед обработкой перехода.
В Свифте:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator)
{
guard self == tabBarController?.selectedViewController else { return }
// handle transition here
}
В моей ситуации UIViewController
был встроен в UINavigationController
поэтому мне пришлось обращаться с этим немного по-другому:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator)
{
guard self.navigationController == tabBarController?.selectedViewController else { return }
// handle transition here
}
Я заменил каждый экземпляр
viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator
с
willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
чтобы избежать вышеупомянутой проблемы с viewWillTransitionToSize...