При использовании UITabBarController все контроллеры представления получают shouldAutoRotate или только отображаемый?

Если у меня есть UITabBarController, отображаются 4 контроллера представления: vc1, vc2, vc3, vc4.
когда отображается vc1, я поворачиваю устройство.
Будут ли все контроллеры представления получать и запускать методы AutoRotate (shouldAutoRotate, willAutoRotate ) или только vc1?

Если только vc1: должен ли я просто отправить уведомление и зарегистрировать для него все vc, чтобы они тоже менялись? Поскольку я не хочу поворачивать vc1 в альбомную ориентацию, затем перейдите на vc2, и он все равно будет в альбомной ориентации.

Кстати, если это имеет значение, я использую другой xib для портрета и пейзажа.

Спасибо!


person Niv    schedule 28.07.2011    source источник


Ответы (1)


Это зависит от того, как построено ваше приложение. У вас должен быть какой-то ViewController, который будет содержать другие ваши viewControllers. Итак, вы можете сделать что-то вроде этого:

-(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
    NSLog(@"Main will rotate");

    [view1 willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    [view2 willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    [view3 willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    [view4 willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
}

В этом случае все ваши UIViewControllers будут вращаться, потому что тот, кто их держит, вращается и заставляет вращаться своих детей. :)

Мне очень нравится этот подход, потому что вам не нужно иметь ссылки на другие viewController'ы из каждого viewController'а. (view1 не нужно знать, что есть view2, view3 и view4).

person Rui Peres    schedule 28.07.2011
comment
Как именно этот венчурный капитал управляет другими венчурными капиталистами? потому что VC, который должен содержать другие VC, на самом деле является панелью вкладок ... У меня также возникают трудности с реализацией этого, потому что довольно сложно изменить мое приложение, так как прошло много времени с тех пор, как я построил базовую структуру VC и его довольно сложно сейчас. Я думал о чем-то вроде доступа к self.tabBarController.viewControllers, но по какой-то причине это не работает. Есть другие идеи? - person Niv; 31.07.2011
comment
РЕДАКТИРОВАТЬ: я только что сделал так. Я не знаю почему, но он не будет отправлять willRotateToInterfaceOrientation, но если я вызову метод, который я заставил себя вращать, он будет работать. просто переберите self.tabBarController.viewControllers и отправьте сообщение всем объектам, которые != self. это очень мило. - person Niv; 31.07.2011