iPad:两阶段方法实现

时间:2011-04-19 12:18:38

标签: iphone ipad rotation orientation stage

这是我的问题,我希望有人可以帮助我。

我的iPad应用程序是这样的:我在appDelegate中添加到窗口的tabBarController中添加了几个viewControllers作为选项卡。在每个viewControllers中,我得到了两个带有一个viewController的navigationControllers。

  • 的appDelegate
    • TabBarController
      • 的viewController
        • navigationController
          • 的viewController
        • navigationController
          • 的viewController
      • 的viewController
        • navigationController
          • 的viewController
        • navigationController
          • 的viewController

在模拟器中一切正常,但是当我在设备上运行时,我收到了这个警告:

Using two-stage rotation animation. To use the smoother single-stage animation, this application must remove two-stage method implementations.

只有在横向模式下在设备上运行时才会发生这种情况。 tabBarController显示的默认视图的第一个navigationController占用了所有的屏幕宽度(这里不重要,但它是为了解释这个警告让我的布局变得疯狂)。在纵向中,控制台中没有任何内容。

我阅读了很多有关此消息的内容,但我找不到任何解决办法让它消失。 我确定这是一个关于shouldAutoRotate或类似事件的故事。 我还注意到,如果我删除tabBarController并简单地将我的第一个viewController添加到窗口,则不会显示该消息。

很奇怪......请帮忙:)。

1 个答案:

答案 0 :(得分:2)

我认为您应该依赖iPad下的标准UISplitViewController。此控制器是“设置”应用和各种其他应用程序下使用的。

如果您对这样的工具感到不舒服,可以查看由GitHub上的slatvick开发的APSplitViewController插件。我希望这可以解决你的很多问题。

修改

在Google上搜索此问题时,我发现当您创建错误的视图控制器层次结构时会出现此警告。在这种情况下,即使视图控制器不包含不同的导航控制器,您也会在视图控制器中推送两个导航控制器。可能存在与您如何发送到viewDidLoadviewWillLoad:等父视图控制器方法相关的问题。您应该尝试了解是否正确地将所有这些调用传递给父视图控制器来自内部导航控制器。