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

Posted

技术标签:

【中文标题】为啥 UITabBarController 返回“..应该支持至少一个方向”消息?【英文标题】:Why is UITabBarController returning a "..should support at least one orientation" message?为什么 UITabBarController 返回“..应该支持至少一个方向”消息? 【发布时间】:2011-07-31 05:58:45 【问题描述】:

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

时给我以下消息

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

除了一直在shouldAutorotateToInterfaceOrientation 中返回YES 之外,关于如何获取消息的任何建议?

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于为啥 UITabBarController 返回“..应该支持至少一个方向”消息?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我第二次使用侧边菜单打不开? (MMDrawerController + UITabBarController)

为啥当我使用 presentModelViewController 时未在我的 UITabBArController 中调用 viewWillAppear?

为啥由 UITabBarController.viewDidLoad 中的代码添加的自定义按钮不响应选择器

从 UITabBarController 调用 SFSafariViewController 并在按下“完成”后返回

当用户返回到 UITabBarController 选项卡时如何刷新表数据

具有纵向/横向视图的 UITabBarController