如何检查当前是否选择了uitabbarbutton

时间:2012-07-10 23:34:25

标签: ios uitabbar uitabbaritem

我想弄清楚如何在我让用户选择另一个之前检查当前选择了哪个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;
    }
}

所以问题是,如果选择了一个单元格而不是你当前正在按的单元格,如何停止另一个选择?

任何帮助都会非常感激。

1 个答案:

答案 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。希望有所帮助。