如何将标签栏与类似Springboard的界面集成?

时间:2011-07-28 13:14:37

标签: iphone ios cocoa-touch uitabbarcontroller

我们是一个大学部门,通过Apple的开发者企业计划开发一个内部分发应用程序(它不会在App Store中)。它将包含目录查找,诊所地址和电话号码等内容的“子应用程序”。我们设计了一个类似Springboard的主页面,其中的图标将调用单独的子应用程序(类似于Facebook和许多大学应用程序,我们已经审核过了。

我使用UINavigationController创建了主图标网格页面,因此它有一个UIViewController结构,我可以通过弹出堆栈中的所有视图控制器返回主页面:

popToViewController:[[self.navigationController viewControllers] objectAtIndex:0]

我们希望能够在某些子应用程序中使用UITabBarController,但是在组合视图控制器接口时会遇到限制,导航控制器不应该包含标签栏控制器。这种限制是有道理的,因为标签栏控制器被设计为在整个应用程序中保持持久性。

然而,就我们的目的而言,“app”实际上是每个独立的“子应用程序”,应该能够基本上以干净的平板开始。通过在开始时使用UINavigationController,我们已经抛弃了使用UITabBarController创建子应用程序的能力。 Apple的设计建议适用于旨在完成紧密耦合的相关事物的应用程序,但对我们来说,在一个应用程序中打包多个子应用程序以便于内部分发和使用非常重要。

有没有更好的方法将视图控制器合并到类似Springboard的主页面中,这样我就可以为子应用程序加载UINavigationController或UITabBarController?我知道这不是模态视图控制器的设计目的,是否可以在主页上使用其中一个用于启动子应用程序?

1 个答案:

答案 0 :(得分:1)

使用UINavigationController作为跳板。当用户选择子应用程序时,使用视图过渡动画手动显示子应用程序的视图控制器(在某些情况下将为UITabBarController),或者作为模态视图。

您可以使用顶级应用程序委托方法,例如returnToSpringboard,将视图切换回跳板(再次手动或通过调用dismissModalViewController)。

或者,如果您确实想使用导航堆栈作为跳板层次结构,请查看Tab bar controller inside a navigation controller, or sharing a navigation root view