Посмотреть изменения ориентации - PullRequest
0 голосов
/ 14 июля 2011

Обновление: я обнаружил, почему он все время загружал одно и то же представление.Я сейчас исправил это.Это была опечатка

ControllerForSplitViews.m

- (id)init
{
    self = [super initWithNibName:@"ControllerForSplitViews" bundle:nil];
    if(UIInterfaceOrientationIsLandscape(self.interfaceOrientation)){
        self.view = landscapeView;
    }
    if(UIInterfaceOrientationIsPortrait(self.interfaceOrientation)){
        self.view = portraintView;
    }
    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
    [[NSNotificationCenter defaultCenter] addObserver:self     selector:@selector(orientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];
    return self;
}

Это работает.

Теперь проблема.Когда представление загружено и запущено, я меняю ориентацию и загружаю другое представление из того же файла пера, Исправлено: но как только я это делаю, другие элементы пользовательского интерфейса исчезают, и только элементы пользовательского интерфейса моего ландшафтного вида сохраняются, и когда яповернуть устройство снова, оно не загружает мой портретный вид снова?Любые предложения, почему это может произойти?

-(void) orientationChanged:(id)object
{   
    if(UIInterfaceOrientationIsPortrait(self.interfaceOrientation))
    {
        self.view = portraintView;
    }
    if(UIInterfaceOrientationIsLandscape(self.interfaceOrientation))
    {
        self.view = landscapeView;
    }
 }

Новая проблема, каждый раз, когда я меняю ориентацию, она загружает вид противоположной ориентации

Спасибо

Ответы [ 2 ]

1 голос
/ 15 июля 2011

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

Два вида Несколько UIPickerViews Один выход

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

Хорошо, поэтому я нашел исправление, которое работает, но я понятия не имею, почему мой оригинальный код не работает, что я сделал:

Удалить:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self     selector:@selector(orientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];

Удалить:

-(void) orientationChanged:(id)object
{   
    if(UIInterfaceOrientationIsPortrait(self.interfaceOrientation))
    {
        self.view = portraintView;
    }
    if(UIInterfaceOrientationIsLandscape(self.interfaceOrientation))
    {
        self.view = landscapeView;
    }
 }

Изменение:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{
    if(((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || 
    (interfaceOrientation == UIInterfaceOrientationLandscapeRight))){

        self.view = landscapeView;

    }else if(((interfaceOrientation == UIInterfaceOrientationPortrait) || 
          (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown))){

        self.view = portraintView;

    }
    return YES;
}

А теперь работает отлично

...