La barra de navigation de iPhone no muestra todos los botones en el dispositivo.

En el modo vertical en el iPhone Simulator o en Horizontal en el dispositivo, muestra todos los botones de la barra de navigation, pero cuando se usa en modo vertical en el dispositivo, no se muestra el button. A continuación se muestran imágenes de las barras de navigation.

El simulador muestra el botón

El dispositivo no muestra el botón

El dispositivo que tengo para probar es un iPhone 4S con iOS 6.1.3 (10B329). El simulador que estoy usando es la versión 7.0 (463.9.4) con iOS 6.0 / 6.1.

Estoy considerando eliminar el button Buscar mientras estaba en modo Edición, pero preferiría mantener esta opción disponible para el usuario independientemente del modo.

Cualquier ayuda o idea es apreciada, gracias.

Editar: los botones de la derecha se crean y agregan inicialmente en viewDidLoad: para el ViewController así:

 _deleteBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:self action:@selector(deleteRows:)]; _deleteBarButtonItem.tintColor = [UIColor networkingColor]; _searchBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(searchButtonClicked:)]; self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, self.editButtonItem]; 

Y al ingresar al modo de edición:

 - (void)setEditing:(BOOL)editing animated:(BOOL)animated { [super setEditing:editing animated:animated]; if (self.tableView.isEditing) { // turn off editing _deleteBarButtonItem.enabled = NO; [self.tableView setEditing:NO animated:animated]; [self.editButtonItem setStyle:UIBarButtonItemStylePlain]; self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, self.editButtonItem]; } else { // turn on editing [self.tableView setEditing:YES animated:animated]; [self.editButtonItem setStyle:UIBarButtonItemStyleDone]; self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, _deleteBarButtonItem, self.editButtonItem]; } } 

Sinceramente, eso es curioso. Quizás sea una propiedad del título lo que lo hace dominante. Según mi experiencia, siempre es mejor tener less opciones durante el "modo de edición". Si decide ir por esa ruta, aquí hay un pequeño código que podría ayudar. (naturalmente, sus nombres de variable muy probablemente difieren)

 // Get the reference to the current toolbar buttons NSMutableArray *toolbarButtons = [self.toolbarItems mutableCopy]; if (editing) { // This is how you remove the button from the toolbar and animate it [toolbarButtons removeObject:self.myButton]; [self setToolbarItems:toolbarButtons animated:YES]; } else { // This is how you add the button to the toolbar and animate it if (![toolbarButtons containsObject:self.myButton]) { // The following line adds the object to the end of the array. // If you want to add the button somewhere else, use the `insertObject:atIndex:` // method instead of the `addObject` method. [toolbarButtons addObject:self.myButton]; [self setToolbarItems:toolbarButtons animated:YES]; } } 

Fui con la opción "less opciones" para los iPhones específicamente en modo Retrato porque no pude encontrar una solución adecuada para el button de desaparición y realmente no había suficiente espacio. En Landscape y en iPad, el tercer button, _searchBarButtonItem tiene espacio para mostrar, por lo que se muestra.

A continuación se detallan los cambios que realicé para get el comportamiento deseado. Espero que algunas personas puedan encontrar esto útil.

 -(void) viewDidLoad { ... self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, self.editButtonItem]; } - (void) viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; if (self.playerTableView.isEditing && !IS_IPAD) { if (UIInterfaceOrientationIsPortrait([[UIApplication shanetworkingApplication] 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 shanetworkingApplication] statusBarOrientation])) { self.navigationItem.rightBarButtonItems = @[_deleteBarButtonItem, self.editButtonItem]; } else { self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, _deleteBarButtonItem, self.editButtonItem]; } } }