iPad ориентация и файлы Xib - PullRequest
0 голосов
/ 24 ноября 2011

Я использую один xib-файл в качестве первого экрана в своем приложении для iPad. В этом xib-файле я использую один вид изображения в фоновом режиме и одну кнопку, если я нажму на эту кнопку, то она перейдет на другую страницу. Моё приложениеподдерживает обе ориентации. Теперь проблема в том, что я нажимаю на эту кнопку и захожу на вторую страницу, а затем меняю ориентацию устройства, затем возвращаюсь на главную страницу, теперь на главной странице изменяется рамка кнопки.поэтому я не могу понять, куда нажимать, чтобы перейти на вторую страницу во второй раз.

Пожалуйста, помогите мне избавиться от этой проблемы.

1 Ответ

1 голос
/ 08 июня 2012

Я нашел гораздо лучший способ, который работает независимо от контроллера навигации.Прямо сейчас у меня это работает, когда встроено в контроллер Nav, а когда НЕ встроено (хотя сейчас я не использую контроллер Nav, поэтому может быть какая-то ошибка, которую я не видел - например, анимация перехода PUSH может идтисмешно, или что-то в этом роде)

Два NIB с использованием соглашения Apple об именовании.Я подозреваю, что в iOS 6 или 7 Apple может добавить это как «функцию».Я использую его в своих приложениях, и он отлично работает:

срабатывает при повороте WILL, а не при повороте (ждет, пока не запустится анимация поворота), использует соглашение об именовании Apple для файлов ландшафта / портрета (по умолчанию).png - это Default-landscape.png, если вы хотите, чтобы Apple автоматически загружала альбомную версию), перезагружает новый NIB, который сбрасывает self.view - это автоматически обновляет дисплей, а затем вызывает viewDidLoad (Apple НЕ будет вызывать это для вас, если вы вручную перезагрузите NIB)

(NB stackoverflow.com требует это предложение здесь - в модуле форматирования кода есть ошибка)

 -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
  if( UIInterfaceOrientationIsLandscape(toInterfaceOrientation) )
{
    [[NSBundle mainBundle] loadNibNamed:[NSString stringWithFormat:@"%@-landscape", NSStringFromClass([self class])] owner:self options:nil];

    [self viewDidLoad];

}
else
{
    [[NSBundle mainBundle] loadNibNamed:[NSString stringWithFormat:@"%@", NSStringFromClass([self class])] owner:self options:nil];
     [self viewDidLoad];

}
}
...