0

私は基本的に UINavigationController のルート ViewController である ViewController を持っています。基本的に、ユーザーがそれを押すと、その色合いが赤と緑の間で切り替わる UIBarButtonItem があります。でも色は変わらないようです。私のコード:

@interface TestButtonColorViewController (){
    BOOL colorMode;
}
@end

@implementation TestButtonColorViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    colorMode = NO;

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Change" style:UIBarButtonItemStyleBordered target:self action:@selector(changeColor)];


}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)changeColor{
    colorMode = !colorMode;

    if (colorMode) {
        [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTintColor:[UIColor redColor]];
    }
    else {
        [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTintColor:[UIColor greenColor]];
    }
}
4

1 に答える 1

0

CSmith が提案したように、色合いを直接設定する必要があります。

- (void)changeColor {
    colorMode = !colorMode;

    if (colorMode) {
        [self.navigationItem.rightBarButtonItem setTintColor:[UIColor redColor]];
    } else {
        [self.navigationItem.rightBarButtonItem setTintColor:[UIColor greenColor]];
    }
}
于 2012-10-09T13:43:39.873 に答える