tabBarController委托不起作用

时间:2014-02-26 10:32:57

标签: ios objective-c uitabbarcontroller

我使用下面的delegate方法将tabBarController设置为不通过将返回值设置为NO来弹出到另一个子视图控制器,

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {

    UIViewController *vc =[((UINavigationController *)viewController).viewControllers objectAtIndex:0];
    if ([vc isKindOfClass:NSClassFromString(@"LYAppCategoryViewController")]) {

        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"" message:@"" delegate:self cancelButtonTitle:@"" otherButtonTitles:@"", nil];
        [alert show];
        return NO;

    }
    else {
        return YES;
    }
}

但是" NO"实际上已退回,tabBarController仍会弹出到另一个sub view controller。所以它有点令人费解,我弄错了,使用它的场景?

引用Apple API" YES如果应选择view controller’s标签,或NO如果当前标签应保持有效状态。"

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我仍然没有理解为什么会这样,但我通过添加这样的代码完成了我的目标:

        [tabBarController setSelectedViewController:[[tabBarController viewControllers] objectAtIndex:0]];
        [tabBarController setSelectedIndex:0];
如果“强制”弹出到第一个视图控制器,

tabBarController将不会弹出到另一个视图控制器。