iPad: 两阶段方法实现

3

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

我的iPad应用程序是这样制作的:我在appDelegate中添加了一个tabBarController,其中包含多个作为选项卡添加的viewControllers。在每个这些viewControllers中,我都有两个带有一个viewController的navigationController。

  • 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简单地添加到窗口中,则不会显示该消息。
非常奇怪...请帮忙 :)

只是一个问题:您如何将两个不同的导航控制器添加到单个视图控制器中?您正在设计什么样的用户界面?我敢打赌这可能是问题的原因... - marzapower
我的目标是创建一个简单的用户界面,就像iPad上的设置应用程序一样。[这篇帖子给了我启发] (http://stackoverflow.com/questions/5259416/add-two-navigation-controller-to-one-tab-bar-item/5282107#5282107) - Bejil
1个回答

2

我认为你应该使用iPad下可用的标准UISplitViewController。这个控制器在设置应用程序和其他各种应用程序中都有使用。

如果您不熟悉此工具,可以查看由GitHub上的slatvick开发的APSplitViewController插件。这可能会解决很多问题,希望对你有所帮助。

编辑

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


请告诉我这是否有效。此插件正好符合您的要求。 - marzapower
我认为他也有方向问题。示例被强制在纵向运行...如果我强制它在横向运行,界面就会崩溃,并且我得到这个日志(再次...)“使用两阶段旋转动画。为了使用更平滑的单阶段动画,该应用程序必须删除两阶段方法实现”。 - Bejil
但是,如果您查看文档和/或屏幕截图,您会发现它旨在支持两种方向。您使用什么代码来“强制”它处于横向模式? - marzapower
是的,在启动应用程序后,您可以将其转换为横向模式,但默认情况下,该应用程序以纵向模式启动。要获取日志消息,我在项目设置中禁用了纵向方向(在支持的设备方向下)。 - Bejil
我编辑了答案并加入了更多提示。希望这有所帮助,否则我现在无法解决你的问题。 - marzapower
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接