Вот мое решение вашей проблемы ниже
.h
@interface DetailViewController : UIViewController <UITabBarDelegate>{
//..
IBOutlet UITabBar *myTabBar; //notice IBOutlet, hook this up to your tabBar in InterfaceBuilder
}
@property (strong, nonatomic) IBOutlet UITabBar *myTabBar;
.m
@synthesize myTabBar;
//..
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self configureView];
actionTabBar.delegate = self; // This sets up tabbardelegate method
}
//..
#pragma myTableDelegates
// a Case for each button
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
switch (item.tag) {
case 0:
{
if (check for condition here) {
// do some tab stuff here, maybe load a view or something
}
else if (check for condition here) {
// do some stuff here like unloading views etc
[myTabBar setSelectedItem:nil]; //clears the previously selected cell
// this means only one cell can be selected at a time.
}
}
break;
case 1:
{
NSLog(@"item 1 selected");
}
break;
case 2:
{
NSLog(@"item 2 selected");
}
break;
default:
break;
}
}
Это должно помочь вам начать, это в значительной степени тот же код, который я использую в моем проекте, поэтому он должен работать, вам просто нужно будет использовать свои собственные статистики if, чтобы получить выбор и отмену выбора вкладки .... если это это не то, что вы ищете
[myTabBar setSelectedItem:nil];
будет достаточно для того, чтобы вы очистили все выбранные ячейки в tabBar ... однако вы должны помнить, что myTabBar - это IBOutlet, поэтому вы должны подключить его в Интерфейсном Разработчике к имеющейся у вас панели вкладок, иначе вы можете сделать это в код, но звучит так, как будто вы работаете с файлом .xib, поэтому приведенное выше решение должно быть приятным.
Я не создавал и не запускал этот конкретный код, поэтому в нем может быть ошибка, дайте мне знать, если вам нужна дополнительная помощь.
В любом случае, я надеюсь, что это сработает для вас:)