将视图作为导航控制器中的主要视图?

时间:2012-11-23 16:02:09

标签: objective-c ios uinavigationcontroller

我正在使用一个标签栏,每个标签都有一个导航控制器,而这又有一堆视图。每个视图都有自己的视图控制器,但现在这并不重要。

让我们看一个带有导航控制器1的标签1,其中包含视图A,B,C。 然而,应用程序的性质决定了视图B是主要视图。

所以我想要的是默认情况下(在第一次或重新启动应用程序之后),当我点击选项卡1时,我会看到B视图和后退按钮到A视图。

我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:0)

您可以为标签栏控制器设置委托,并实施tabBarController:didSelectViewController:以检测有人点击标签的时间。如果您检测到A即将被选中并且您希望显示B,则可以告诉A的控制器使用其导航控制器来推动B的控制器。

答案 1 :(得分:0)

尝试初始化并将视图B(无动画)推送到视图A的viewDidLoad中的导航堆栈。

答案 2 :(得分:0)

您可以使用UINavigationController的setViewControllers:animated:。 根据您的具体需求,您可以在应用委托代理applicationWillEnterForeground:applicationDidBecomeActive:方法中进行设置。

答案 3 :(得分:0)

我记得有一个苹果样本应用程序正是这样做的。一般的想法是保存最后一个可见的视图控制器(或者只是硬编码你想要的那个),然后使用类似的东西将其推送到可见状态:

[myNavigationController pushViewController:viewControllerToBeVisible animate:NO];

您希望显示应用tabBarController:didSelectViewController:,并根据选择的viewController处理不同的情况。