简体   繁体   中英

UIBarButtonItemStyleDone does not create blue buttons in navigation bar when controller is pushed

I've searched around on several different forums and can't seem to find an answer for this. I have added a bar button item to a navigation controller and set its style to UIBarButtonItemStyleDone. When this is the first controller on the navigation stack, the button properly shows up blue. However, when the controller is created and pushed onto the stack, the style is ignored and it shows up black.

I know that this problem occurs when the tintColor has been changed, but I am using the standard UIBarStyleBlack and not setting tintColor. I've tried setting tintColor to nil, as well, but that doesn't work either.

Relevant code:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
    self.navigationItem.rightBarButtonItem =
    [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
                                                  target:self
                                                  action:@selector(createNew:)];
    self.navigationItem.rightBarButtonItem.style = UIBarButtonItemStyleDone;
}

Any ideas or workarounds would be greatly appreciated.

You're using a preset system item, for which the style property does nothing. You need to either switch to the actual UIBarButtonSystemItemDone system item (which is blue, but says "Done"), or switch to using either -initWithImage:style:target:action: or -initWithTitle:style:target:action: and supplying your own image or text.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM