0

ボタンを作成し、このガイドを使用してこれをタブバーの上に配置しました。

selectedIndexが2の場合にのみ、このボタンを強調表示/選択したい。selectedIndexが0 1 3 4の場合、を通常の状態にしたくない。これは可能ですか?

次のことを試しましたが、ボタンがハイライト表示されますが、ボタンをクリックするとすぐにハイライトが消えて戻りません。

if (self.tabBarController.selectedIndex == 2) {
    button.selected = YES;
    button.highlighted = YES;
}else {      
    button.selected = NO;
    button.highlighted = NO;
}

必要に応じて、タブバーにボタンをロードするコード:

UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
CGRect buttonFrame = button.frame;
buttonFrame.size.height = 55;
buttonFrame.size.width = 64;
buttonFrame.origin.x = 128;
buttonFrame.origin.y = 424;
button.frame = buttonFrame;
[button setBackgroundImage:[UIImage imageNamed:@"button.png"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"buttonhighlight.png"] forState:UIControlStateHighlighted];
[button setBackgroundImage:[UIImage imageNamed:@"buttonhighlight.png"] forState:UIControlStateSelected];

[button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];

[_tabBarController.view addSubview:button];
4

2 に答える 2

1

ボタンの強調表示コードはどこにありますか?タブに触れるたびに呼び出す必要があると思います(ユーザーがタブを切り替えるタイミングを知るためのUITabBarControllerDelegateメソッドを実装します)。tabBarController:didSelectViewController:

例:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 

    if([viewController.title isEqualToString:@"View controller 1"]) {

        NSLog(@"View controller 1 was selected");

    } else {

        NSLog(@"Some other view controller was selected");

     }
}
于 2012-06-06T21:12:01.937 に答える
0

ivはこれを私のカスタムtabbar.mファイルに追加しました。

- (void)tabBar:(UITabBar *)theTabBar didSelectItem:(UITabBarItem *)item {
NSUInteger indexOfTab = [[theTabBar items] indexOfObject:item];
NSLog(@"Tab index = %u", indexOfTab);

if (indexOfTab == 0) {
    [button setSelected:false];
}
if (indexOfTab == 1) {
    [button setSelected:false];
}

if (indexOfTab == 3) {
        [button setSelected:false];
    }
if (indexOfTab == 4) {
        [button setSelected:false];

    }
}


- (void)buttonPressed:(id)sender {
        [button setSelected:true];

        [self setSelectedIndex:2];}

これは私のために働きます、それが他の人を助けることを願っています...。

于 2012-11-01T23:13:16.787 に答える