UPDATE 2Ограничить вращение в Tab Bar View Controllers
В моем UITabBarController подклассу я попытался добавить это:
-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
}
Теперь, каждый раз, когда я выбираю вкладку элемент, устройство поворачивается в портретный режим отлично , Однако теперь я могу повернуть устройство, пока выбрано (a), и устройство будет вращаться в альбомном режиме. Как я могу остановить вращение устройства?
Я считаю, что этот метод в моем закладке контроллера подкласса, что является причиной этого:
- (BOOL)shouldAutorotate {
if(self.selectedIndex == 0)
{
return NO;
}
return [self.viewControllers.lastObject shouldAutorotate];
}
Если я вернусь «NO» Я не могу повернуть, когда я нахожусь в контроллере представления, но когда я выбираю его, он автоматически не поворачивается к портрету. Если я вернусь «ДА», я могу повернуть, когда я нахожусь в контроллере представления, но когда я его выбираю, он автоматически поворачивается на портрет.
У меня есть обычай Tab Bar Controller в моем приложении с помощью следующей иерархии:
UITabBarController
|
UINavigationController
| |
| UIViewController(a)
|
UINavigationController
| |
| UIViewController(b)
|
UINavigationController
|
UIViewController(c)
Я хочу View Controller (а) только иметь возможность просматривать в портретном режиме, а также View контроллеры (b) и (c) для просмотра во всех направлениях, но вверх ногами. Теперь я могу сделать это с каждым контроллером представления отдельно, но моя проблема возникает, когда я нахожусь в (b) в ландшафтном режиме и выбираю элемент табуляции для (a), а затем отображается в ландшафтном режиме, который не выглядит хорошо. Как я могу убедиться, что панель вкладок (или контроллер вида) проверяет, можно ли просматривать текущий контроллер просмотра в текущей ориентации?
В случае необходимости, вот мой код (а), что ограничивает его в портретный режим сам по себе:
- (BOOL) shouldAutorotate
{
return NO;
}
- (NSUInteger) supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
UPDATE
Я добавил это, чтобы посмотреть контроллер (а), но я получаю черный квадрат в середине моего представления, а заголовок в панели навигации больше не центрирован.
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
}
Благодарим вас за ответ, но это не отвечает на мой вопрос. – Jacob
@ Jacob, каким образом он не отвечает на ваш вопрос? Вы используете неправильное перечисление, переключитесь вправо. – Andy
Я не вижу, как изменение моего типа возврата в одном контроллере просмотра влияет на вращение в другом, когда оно выбрано в контроллере табуляции. – Jacob