如何使用UITabBarController的shouldSelectViewController委托方法

时间:2011-12-22 16:00:11

标签: iphone uitabbarcontroller uitabbaritem

我有一个基于tabbar的应用程序(在窗口中添加了tabbar控制器),所有导航控制器及其各自的根视图控制器都在window的xib中设置。我有4个标签栏项目。

假设我单击第1项,然后向我显示该项目的根视图控制器。此根视图包含一个包含5个单元格的表。如果我单击一行,则会将新视图推送到导航堆栈。现在,此推送视图有一个单击按钮,将再次按下一个新的视图控制器。我有4个这样的视图控制器,它们在导航堆栈上一个接一个地被推送。

现在,让我说我在导航堆栈中的第3个视图,然后,我点击了标签栏项目1(我之前点击过的那个);然后,显示第一个根视图控制器,我的整个导航堆栈都消失了。我只是不希望这种情况发生,也就是说,我想保留在第3个视图控制器上,并且还能够点击所有标签栏项目(不想禁用任何项目)。我知道它可以通过实现tab bar控制器委托方法来实现:shouldSelectViewController,但我不知道怎么做??

1 个答案:

答案 0 :(得分:8)

检查当前选定的viewcontroller。 如果current与tap选项卡相同,则在委托方法中返回no。想想这就是你的意思吗?

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController; 
{
if ([[tabBarController viewControllers] objectAtIndex:tabBarController.selectedIndex] == viewController)
    {
    return NO;
    }
else
    {
    return YES;
    }   
}