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...

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