интерфейс ориентация только в определенных видах - PullRequest
0 голосов
/ 24 сентября 2010

У меня есть главное представление, которое содержит uitableview, и я выдвигаю другое представление, когда пользователь нажимает на строку Я хочу, чтобы только дочерние представления вращались и написали код для этого. Но проблема в том, что когда я нажимаю на вид, он также включает ориентацию на главном виде.

Когда я поворачиваю основной вид влево, строка состояния также меняется влево. Я не применял никакой ориентации на главном экране. Я сделал следующее на MainView, но код все еще строка состояния не меняется.

 -(void) viewDidLoad
{
     [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
     [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(receivedRotate:) name: UIDeviceOrientationDidChangeNotification object: nil];
 }

-(void) receivedRotate: (NSNotification*) notification
 {
    UIDeviceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];

    if(interfaceOrientation != UIDeviceOrientationUnknown)
    {
        if (interfaceOrientation==UIInterfaceOrientationLandscapeLeft)
        {
           [self shouldAutorotateToInterfaceOrientation:interfaceOrientation];
        }
    }

}

Как отключить интерфейсOrientation в главном окне?

1 Ответ

1 голос
/ 24 сентября 2010

в вашем главном контроллере представления, переопределите этот делегат:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation; // Override to allow rotation. Default returns YES only for UIDeviceOrientationPortrait
{
    if((toInterfaceOrientation == UIInterfaceOrientationLandscapeRight))
        return YES;
    return NO;
}

Теперь ваш главный контроллер вида всегда будет в ландшафтном режиме. И удалите весь свой код, который вы упомянули выше. Вы не должны вызывать метод shouldAutorotateToInterfaceOrientation: *.

...