我正在使用一个标签栏,每个标签都有一个导航控制器,而这又具有一堆视图。每个视图都有自己的视图控制器,但现在这并不重要。
让我们有一个带有导航控制器 1 的选项卡 1,其中包含视图 A、B、C。但是,应用程序的性质决定了视图 B 是主要视图。
所以我想要的是默认情况下(在第一次或重新启动应用程序之后),当我点击选项卡 1 时,我会看到 B 视图以及 A 视图的后退按钮。
我怎样才能做到这一点?
我正在使用一个标签栏,每个标签都有一个导航控制器,而这又具有一堆视图。每个视图都有自己的视图控制器,但现在这并不重要。
让我们有一个带有导航控制器 1 的选项卡 1,其中包含视图 A、B、C。但是,应用程序的性质决定了视图 B 是主要视图。
所以我想要的是默认情况下(在第一次或重新启动应用程序之后),当我点击选项卡 1 时,我会看到 B 视图以及 A 视图的后退按钮。
我怎样才能做到这一点?
您可以为您的标签栏控制器设置一个委托,并实现tabBarController:didSelectViewController:
检测何时有人点击标签。如果你检测到 A 即将被选中,而你希望 B 被显示,你可以告诉 A 的控制器使用它的导航控制器来推动 B 的控制器。
您可以使用setViewControllers:animated:
UINavigationController。根据您的确切需求,您可以在您的应用程序委托applicationWillEnterForeground:
或applicationDidBecomeActive:
方法中进行设置。
尝试初始化视图 B(没有动画)并将其推送到视图 A 的 viewDidLoad 中的导航堆栈。
我记得有一个 Apple 示例应用程序可以做到这一点。一般的想法是保存最后一个可见的视图控制器(或者只是硬编码你想要的那个),然后使用类似这样的东西将它推送到可见状态:
[myNavigationController pushViewController:viewControllerToBeVisible animate:NO];
您想要显示应用程序tabBarController:didSelectViewController:
,并根据选择的 viewController 处理不同的情况。