我使用下面的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
如果当前标签应保持有效状态。"
非常感谢您的帮助。
答案 0 :(得分:0)
我仍然没有理解为什么会这样,但我通过添加这样的代码完成了我的目标:
[tabBarController setSelectedViewController:[[tabBarController viewControllers] objectAtIndex:0]];
[tabBarController setSelectedIndex:0];
如果“强制”弹出到第一个视图控制器,tabBarController将不会弹出到另一个视图控制器。