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 のすべてのタブを選択解除できるようにしたい場合。Tab Bar View Controller は使用できません。

EDIT 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];
}

あとは、ストーリーボード/ib に UITabBar アウトレットを設定するか、init を割り当てる場合は、tabBar プロパティを tabBar に設定するだけです。UITabBarController は使用しないでください。それが役立つことを願っています。

于 2012-07-11T00:24:48.633 に答える