Hide the rightBarButtonItem of a navigation contro

2019-04-19 17:37发布

Does anyone know how to hide a rightBarButtonItem of a UINavigationController? In my application, I have an edit button as a rightBarButtonItem of a UINavigationController. I want to hide this ? UIBarButton` when some operations are done.

3条回答
女痞
2楼-- · 2019-04-19 18:01

Try

self.navigationItem.rightBarButtonItem = nil;

When you want it back though you will have to instanciate a button i.e.

UIBarButtonItem *rightBarButton = 
 [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch
                                               target:self
                                               action:@selector(searchBar:)];
self.navigationItem.rightBarButtonItem = rightBarButton;
[rightBarButton release];
查看更多
乱世女痞
3楼-- · 2019-04-19 18:06

If you need to hide/show the button based on some condition, try this:

if (condition) { 
    self.navigationItem.rightBarButtonItem.title = @"";
    self.navigationItem.rightBarButtonItem.enabled = NO;
} else {
    self.navigationItem.rightBarButtonItem.title = @"my button title";
    self.navigationItem.rightBarButtonItem.enabled = YES;
}

This way you don't have to save a reference to the button in a property or worry about wiring up the action on a new button.

查看更多
唯我独甜
4楼-- · 2019-04-19 18:20

To Hide the right button: self.navigationItem.rightBarButtonItem = nil;

Now, to show it:

  1. If you setup the right button in your view controller by assigning it to self.editButtonItem then simply assign it again in order to show it:

    self.navigationItem.rightBarButtonItem = self.editButtonItem;

  2. If you setup the right button in your view controller by allocating and initing a UIBarButtonItem, then simply keep a reference to the UIBarButtonItem in your view controller, and assign it again when you need to show it.

查看更多
登录 后发表回答