Как заставить горизонтальную ориентацию для вида внутри UITabBarController? - PullRequest
0 голосов
/ 20 июля 2011

У меня есть UITabBarController в моем MainWindow.xib.

Каждая вкладка содержит UINavigationController, который имеет UITableViewController.

Когда я нажимаю кнопку в UITableViewController, я хочу нажать контроллер представленияна стек навигации в горизонтальной ориентации.

Я переписал следующее в UITableViewController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations.
    return YES;
}

, но контроллер push-представления не отображается в горизонтальной ориентации (в XIB этоопределяется как ландшафт).

Как я могу толкнуть его в горизонтальной ориентации?

Ответы [ 3 ]

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

Авторация для UITabBarController и UINavigationController имеет некоторые ограничения:

  1. для UITabBarController, автоповорот будет работать, только если все контроллеры в панели вкладок поддерживают автоповорот;

  2. для UINavigationController, автоповорот будет работать, только если rootViewController в UINavigationController его поддерживает.

Как только вы убедитесь, что эти условия соблюдены, вы можете попытаться отправить свой UITableViewController, определив его shouldAutorotateToInterfaceOrientation, следующим образом:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationLanscape);
}

EDIT:

Все ваши контроллеры UIView должны иметь это определение для shouldAutorotateToInterfaceOrientation:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}

за исключением той, которую вы хотите использовать для ландшафта, которая должна иметь определение, данное выше.

Также посмотрите последний пост в этой теме , чтобы правильно реализовать shouldAutorotateToInterfaceOrientation для UITabBarController.

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

Ваш подход кажется логичным.Однако, вы пробовали это в контроллере push-представления, который хочет иметь только альбомную ориентацию:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
  return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
          interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

Идея этого метода состоит в том, чтобы вернуть YES для ориентаций, которые вы поддерживаете для контроллера представления.

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

Вам необходимо изменить ориентацию строки состояния в методе viewWillAppear и вернуться в viewWillDisappear и т. Д., А также вернуть только альбомную ориентацию в методе

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations.
    return (UIInterfaceOrientationLandscapeRight or UIInterfaceOrientationLandscapeLeft);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...