选择性地允许在标签栏/导航应用程序中自动旋转

时间:2010-05-24 11:09:49

标签: iphone uinavigationcontroller uitabbarcontroller autorotate

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

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

然后我将我的UINavigationController子类化并将shouldAutorotate设置为NO,希望我能够检测到正在显示的视图实际上是一个detailView,然后返回YES ...我似乎无法做到这一点。

有任何帮助吗?

谢谢!

安东尼奥

1 个答案:

答案 0 :(得分:1)

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

我很确定他们通过将标签栏放在导航控制器中来实现这一点。当您转到详细信息视图时,它会完全弹出选项卡栏并推送详细信息视图。

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

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

任何时候只能推送其中一个同级视图(tabbar,detail portrait,detail coverflow)。

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