0

我试图弄清楚如何在让用户选择另一个之前检查当前选择了哪个 uitabbarbutton 我希望他们取消选择他们之前选择的按钮。

这是我用来查看选择哪个按钮的代码..

#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;
    }
}

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

任何帮助将不胜感激。

4

1 回答 1

0

看来您应该实现标签栏委托的 -tabBarController: shouldSelectViewController: 方法。如需进一步参考,请查看 http://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UITabBarControllerDelegate_Protocol/Reference/Reference.html

请记住,您应该设置委托。如果您需要进一步的帮助,请随时询问

编辑:

我上面贴的方法不符合题型要求。如果用户希望能够使用 [tabBar setSelectedItem:nil] 取消选择 TabBar 的所有选项卡;您不能使用标签栏视图控制器。

编辑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 出口,或者如果你分配初始化它,只需将 tabBar 属性设置为你的 tabBar。记住不要使用 UITabBarController。希望有帮助。

于 2012-07-11T00:24:48.633 回答