Я пока не нашел ничего подходящего для моей ситуации...
К вашему сведению, я разрабатываю для iOS 5, используя раскадровку.
У меня есть контроллер панели вкладок с 2 представлениями в нем (назовем их вкладка 1 и вкладка 2). У меня также есть отдельная альбомная ориентация, без панели вкладок, которая используется каждый раз, когда устройство поворачивается во время использования приложения. Я использую переход, запущенный вручную в shouldAutorotateToInterfaceOrientation
, чтобы переключиться в это представление и из него. Я также использую NSString в альбомной ориентации, чтобы узнать, с какой вкладки я иду, чтобы вернуться к правильной, когда я вернусь к портретной ориентации. Пока это работает нормально. Я могу переходить в ландшафтный режим и выходить из него именно так, как хочу.
Моя проблема:
Когда я запускаю приложение в портретной ориентации, я вижу панель вкладок. Если я перехожу к пейзажу, он исчезает. Это нормально, это то, что я сделал в своей раскадровке. Но когда я возвращаюсь к портретной ориентации, панель вкладок не возвращается! Это проблема.
Изменить: код, вызывающий ротацию
Я перестал использовать shouldAutorotateToInterfaceOrientation
для поворота, потому что это противоречило пользовательским переходам. Проблема с панелью вкладок была здесь раньше, так что это не проблема. Вместо этого я использую didRotate
.
Вот код из FirstViewController.m
(тот же код в SecondViewController.m
, изменив мой идентификатор перехода):
-(void)didRotate:(NSNotification *)notification
{
UIInterfaceOrientation newOrientation = [[UIDevice currentDevice] orientation];
if ((newOrientation == UIInterfaceOrientationLandscapeLeft || newOrientation == UIInterfaceOrientationLandscapeRight))
{
[self performSegueWithIdentifier: @"Page1ToLandscapeSegue" sender: self];
}
}
И из LandscapeViewController.m
(previousView
- это NSString, установленная перед переходом в ландшафт, поэтому я знаю, из какого представления я исхожу):
-(void)didRotate:(NSNotification *)notification
{
UIInterfaceOrientation newOrientation = [[UIDevice currentDevice] orientation];
if (newOrientation == UIInterfaceOrientationPortrait)
{
if ([previousView isEqualToString: @"View1"]) {
[self performSegueWithIdentifier: @"LandscapeToPage1Segue"
sender: self];
}
else if ([previousView isEqualToString: @"View2"]) {
[self performSegueWithIdentifier: @"LandscapeToPage2Segue"
sender: self];
}
}
}
shouldAutorotateToInterfaceOrientation
, чтобы мы могли вам помочь. - person lnafziger   schedule 03.09.2012LandscapeToPage1Segue
отображает представление 1 или панель вкладок? Он должен отображать панель вкладок, если это то, что вы хотите видеть (и он содержит представления). - person lnafziger   schedule 03.09.2012