Hi,
I had the same problem and I have found a solution (but I find it a little bit dirty)
In your ViewController where you want to disable the TabBarItem, create a variable :
UITabBarController *myTabBarController; with property ....
In the class where you manage your Tabbarcontroller put this code in the viewDidLoad :
MyViewController * vc = (MyViewController *)[navigationController.viewControllers objectAtIndex:0];// O the index of the first view controller replace it with the index of the needed viewController
vc.myTabBarController = myTabBarController; // pass your TabBarController to your ViewController
Now back to your ViewController class (MyViewController) and use this code to desable the tabBarItem :
UITabBarItem *mapTabBarItem= [[myTabBarController.tabBar items] objectAtIndex:1]; // I want to desable the second tab for example (index 1)
[mapTabBarItem setEnabled:NO];
Note that this is not the best way to do it, but it works :-)