iPad App:自定义默认导航控制器

Posted

技术标签:

【中文标题】iPad App:自定义默认导航控制器【英文标题】:iPad App: Customize the default navigation controller 【发布时间】:2012-11-20 04:38:10 【问题描述】:

嗯,我不确定标题应该是什么。

我正在开发一个 iPad 应用程序。我的应用将具有以下层次结构。

'Front Page' 只是一个供用户选择语言的页面(视图控制器)。选择语言后,会显示“菜单页”视图控制器。

从下面的菜单页面和所有视图控制器(VC)开始,页面布局是这样的。

如您所见,有顶部菜单和底部菜单。单击按钮,应用程序将快速跳转到相应的视图控制器(树中的第 3 级,VC1、VC2、VC3 等)。对于每个视图,每个页面上都有一个 BACK 按钮,单击该按钮将返回到父视图控制器。

我想通过使用标签栏视图控制器和导航视图控制器来实现这一点,但我仍然不知道如何实现这一点。

或者也许我应该只使用导航视图控制器并隐藏除后退按钮之外的顶部工具栏,并显示一个覆盖 UIView 作为菜单,它位于所有其他 UIView 之上。

有人可以帮助我吗?谢谢。

由于这是我的应用程序的最外层容器,我希望在开始时正确执行此操作..

对不起,我的问题太长了。

【问题讨论】:

有人知道如何控制状态栏的高度,即上图中“后退按钮”所在的位置。控制存在后退按钮的水平块的高度,而另一个 v1 出现在布局的顶部。 【参考方案1】:

这取决于您要使用哪种视图转换以及您希望如何更新顶部和底部栏中的按钮。

如果你想要通用的导航转换,你可以在根目录下使用 navigationController。对于底栏的按钮,可以使用toolBar。

但是,如果你想继续使用 tabbarController,强烈建议不要使用 navigationController 作为 root 并推送不同的 tabbarController。换句话说,修改你的 viewControllers 树以保持 tabbarController 为 root。

您应该做出的最重要的决定是您希望将哪种容器控制器用作根控制器。根据我的经验,navigationController 最灵活地实现您的工作流程。

如果您愿意,您可以创建自己的容器控制器: http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html

这并不像看起来那么难,除非您想避免实现视图转换。

【讨论】:

【参考方案2】:

我会建议你将导航栏隐藏起来,并使用带有自定义按钮的工具栏

【讨论】:

【参考方案3】:

最后我决定编写自己的容器视图控制器,它类似于默认导航控制器,顶部和底部都有自定义工具栏。

我花了一晚上的时间阅读了iOS官方关于UIViewController的指南,对如何编写它有了一个清晰的认识。

http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ViewLoadingandUnloading/ViewLoadingandUnloading.html

原来实现起来并没有那么难

【讨论】:

以上是关于iPad App:自定义默认导航控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何为导航控制器提供自定义 UIViewControllerAnimatedTransitioning 并使用默认 UIViewControllerInteractiveTransitioning

视图控制器之间的自定义转换,包括导航栏

自定义导航控制器的后退按钮

我想在 iPad 应用程序中创建一个行为类似于操作表的自定义视图

如何在我的自定义导航控制器中隐藏标签栏?

自定义尺寸 iPad 拆分视图