为什么UITabBarController返回“..应该支持至少一个方向”的消息?

时间:2011-07-31 05:58:46

标签: iphone ios uitabbarcontroller landscape

我将UITabBarController子类化为覆盖shouldAutorotateToInterfaceOrientation:,以便在某些情况下我可以支持横向模式。当我运行它时,标签栏控制器在被覆盖的方法返回NO

时给我以下消息

The view controller <...0x644f50> returned NO from -shouldAutorotateToInterfaceOrientation: for all interface orientations. It should support at least one orientation.

有关如何在YES中一直返回shouldAutorotateToInterfaceOrientation以外获取消息的任何建议吗?

2 个答案:

答案 0 :(得分:13)

如果您返回NO,则表示您的视图控制器无法在4个方向中的任何一个上显示。

您应该考虑您希望它支持哪些方向,并使用它们为您提供的orientation参数来接受这些方向。

例如,如果我希望我的视图控制器能够正确支持纵向和横向,这将是我的实现(这可以简化为一行,但为了清晰起见我正在扩展它):

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIDeviceOrientation)orientation{
  if(orientation == UIDeviceOrientationPortrait) return YES;
  if(orientation == UIDeviceOrientationLandscapeRight) return YES;
  return NO;
}

答案 1 :(得分:0)

您可以使用UIInterfaceOrientationIsLandscape()和UIInterfaceOrientationIsPortrait()来处理您希望UIViewController支持的特定方向。