UINavigationController,带有UITabBarController的rootViewController

时间:2011-09-30 22:39:54

标签: iphone uinavigationcontroller uitabbarcontroller

我有一个UITabBarController。一个选项卡是UINavigationController,它的rootViewController是UIViewController的子类。在我的rootViewController中,在我的viewDidLoad中,我推送了三个ViewControllers中的第一个。根据按下的UISegmentedControl,我弹出旧视图,然后按下与UISegmentedControl对应的viewController。这在很大程度上起作用。

问题是如果我当前在导航层次结构中,如果我再次点击同一个标签(我正在查看的标签),它会将当前的ViewController弹出堆栈并返回到rootViewController。我不确定为什么会这样。我只有一个地方,我popViewController,我在那里设置了一个断点,它永远不会被调用。所以我的假设是,当我已经在该选项卡上时,当我选择UITabBarController的选项卡时,它将返回到rootViewController。那是对的吗?我有什么办法可以解决这个问题吗?感谢。

2 个答案:

答案 0 :(得分:1)

是的,这是标准行为,但您可以通过实施标签栏委托方法shouldSelectViewController

来阻止它

如何执行此操作的示例是Prevent automatic popToRootViewController on double-tap of UITabBarController

答案 1 :(得分:0)

您描述的功能是tabbarcontroller的标准功能。有些用户习惯使用它,如果你禁用它可能会感到沮丧。

但是,可以使用tabBarController:shouldSelectViewController委托函数。在该功能中,您可以检查视图控制器是否需要选择与已显示的选项匹配。如果是这样,请不要允许它。