I went with the "less options" option for specifically iPhones in Portrait mode because I couldn't find a proper solution for the disappearing button and there really wasn't enough space. In Landscape and on iPad, the third button, _searchBarButtonItem
has room to show, so it is displayed.
Below are the changes I made to get the desired behaviour. I hope some people can find this useful.
-(void) viewDidLoad {
...
self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, self.editButtonItem];
}
- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if (self.playerTableView.isEditing && !IS_IPAD)
{
if (UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation]))
{
self.navigationItem.rightBarButtonItems = @[_deleteBarButtonItem, self.editButtonItem];
}
else
{
self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, _deleteBarButtonItem, self.editButtonItem];
}
}
}
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
[super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
if (self.playerTableView.isEditing && !IS_IPAD)
{
if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation))
{
self.navigationItem.rightBarButtonItems = @[_deleteBarButtonItem, self.editButtonItem];
}
else
{
self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, _deleteBarButtonItem, self.editButtonItem];
}
}
}
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated];
...
if (self.playerTableView.isEditing) {
...
self.navigationItem.rightBarButtonItems = @[_filterBarButtonItem, self.editButtonItem];
} else {
...
if (!IS_IPAD && UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation]))
{
self.navigationItem.rightBarButtonItems = @[_deleteBarButtonItem, self.editButtonItem];
}
else
{
self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, _deleteBarButtonItem, self.editButtonItem];
}
}
}