我想弄清楚如何在我让用户选择另一个之前检查当前选择了哪个uitabbar按钮我希望他们取消选择之前选择的按钮。
这是我用来查看哪个按钮被选中的代码..
#pragma TabBardelegatesht
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
switch (item.tag) {
case 0:
{
NSLog(@"item 0 selected");
}
break;
case 1:
{
NSLog(@"item 1 selected");
}
break;
case 2:
{
NSLog(@"item 2 selected");
}
break;
case 3:
{
NSLog(@"item 3 selected");
}
break;
case 4:
{
NSLog(@"item 4 selected");
}
break;
case 5:
{
NSLog(@"item 5 selected");
// set up or remove jumpBar
[self jumpBarButtonPosition:1];
}
break;
default:
break;
}
}
所以问题是,如果选择了一个单元格而不是你当前正在按的单元格,如何停止另一个选择?
任何帮助都会非常感激。
答案 0 :(得分:0)
看来你应该实现-BarBarController:tabBar的委托的shouldSelectViewController:方法。有待进一步参考检查 http://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UITabBarControllerDelegate_Protocol/Reference/Reference.html
请记住,您应该设置委托。如果您需要进一步的帮助,请随时询问
编辑:
我上面发布的方法不符合问题要求。如果用户希望能够使用[tabBar setSelectedItem:nil]取消选择TabBar的所有Tabs;您无法使用标签栏视图控制器。
编辑2:在尝试之后,我终于完成了对问题的编码。
接口:
@property (nonatomic) BOOL buttonsEnabled;
@property (nonatomic,weak) IBOutlet UITabBar *tabBar;
实现:
@synthesize tabBar = _tabBar;
@synthesize buttonsEnabled = _buttonsEnabled;
- (void)viewDidLoad
{
[super viewDidLoad];
[self.tabBar setDelegate:self];
[self disableAllButtons];
UITabBarItem *item = [self.tabBar.items objectAtIndex:0];
[item setEnabled:YES];
[self.tabBar setSelectedItem:item];
self.buttonsEnabled = NO;
}
-(void)tabBar:(UITabBar*)tabBar didSelectItem:(UITabBarItem *)item
{
if(self.buttonsEnabled == NO)
{
[tabBar setSelectedItem:nil];
[self enableAllButtons];
}
else {
[self disableAllButtons];
[item setEnabled:YES];
}
}
-(void)enableAllButtons
{
NSArray *items = [self.tabBar items];
for (UITabBarItem* item in items)
[item setEnabled:YES];
[self setButtonsEnabled:YES];
}
-(void)disableAllButtons
{
NSArray *items = [self.tabBar items];
for (UITabBarItem* item in items)
[item setEnabled:NO];
[self setButtonsEnabled:NO];
}
唯一要做的就是在storyboard / ib中设置UITabBar插座,或者如果你分配init,只需将tabBar属性设置为tabBar即可。切记不要使用UITabBarController。希望有所帮助。