1

我有一个 UITabBar/UINavigation 应用程序,在给定视图中允许自动旋转时遇到了一些问题。

TabBar 允许使用表格视图项目更改部分。当其中一个项目被点击时,我推送一个隐藏 TabBar 并且应该自动旋转的新视图。我尝试了最简单的方法,这对我来说似乎最合乎逻辑:在 rootViewController 中禁用自动旋转并在 detailViewController 中允许,但这不起作用(shouldAutorotateToInterfaceOrientation 返回 YES,但是 willRotateToInterfaceOrientation 永远不会被调用并且视图不会自动旋转)。我读到 TabBar 中的所有 VC 都应该向 shouldAutorotateToInterfaceOrientation 返回 YES,所以我这样做了,但结果是现在我的整个应用程序都在旋转。

然后我将我的 UINavigationController 子类化并将 shouldAutorotate 设置为 NO,希望我可以检测到所显示的视图何时实际上是 detailView,然后返回 YES……我似乎无法做到这一点。

有什么帮助吗?

谢谢!

安东尼奥

4

1 回答 1

1

听起来你有一个类似 iPod 应用程序的设置,它有一个用于播放列表视图、歌曲视图等的选项卡,但是当你转到歌曲的详细视图时它会消失。详细视图可以旋转,但标签栏视图不能。当您旋转标签栏时,它会变成封面流程详细信息视图。

我很确定他们通过将标签栏放在导航控制器中来做到这一点。当您进入详细视图时,它会完全弹出标签栏并推送详细视图。

所以实际的层次结构看起来像:

Nav {
    tabbar {
        playlist
        Artist
        //... other tabs
    }
    detail view portrait
    detail view cover flow
}

任何时候都只推送一个同级视图(标签栏、细节肖像、细节封面流)。

iPod 应用程序这样做是因为详细视图是整个应用程序的主要功能视图,因此应用程序的其余部分是围绕导航到它而构建的。如果您的应用程序不是这种情况,那么此设置可能比它的价值更麻烦。

于 2010-05-24T12:22:24.453 回答