При использовании UITabBarController все контроллеры представления должны получать AutoRotate или только отображаемый? - PullRequest
0 голосов
/ 28 июля 2011

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

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

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

Tnx!

1 Ответ

0 голосов
/ 28 июля 2011

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

-(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];
}

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...