如何使用UITabBarController的shouldSelectViewController委托方法

ans*_*hul 0 iphone uitabbarcontroller uitabbaritem

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

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

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

Nik*_*rns 8

执行当前所选viewcontroller的检查.如果current与tap选项卡相同,则在委托方法中返回no.想想这样的意思是什么意思?

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