iphone - teclados - iOS-¿UINavigationController agrega múltiples elementos correctos?
teclados para iphone 6 (6)
Tengo un UINavigationController
. Intento agregar varios botones en el lado derecho de mi barra de navegación. ¿Cómo puedo conseguir esto? ¿Qué tipo de botón toma? UIBarButton
o UINavigationItem
?
A partir de iOS5, puede asignar una matriz de elementos de botón de barra a la rightBarButtonItems
(tenga en cuenta el plural) del elemento de navegación.
En Xcode 7.1 (quizás incluso antes), puedes agregar varios elementos al lado derecho o izquierdo de UINavigationBar simplemente arrastrándolos. Si arrastras hasta el lugar correcto, obtienes una pequeña barra vertical que indica dónde se colocará ese elemento ser insertado.
Estoy seguro de haber leído en la referencia del desarrollador que los botones adicionales en la barra de navegación están mal vistos. No puedo encontrar ese pasaje ahora. No lo he hecho yo mismo, pero encontré este enlace que parece delinear exactamente lo que necesita hacer: (http://www.mattdipasquale.com/blog/2010/11/02/how-to-add-multiple-uibarbuttonitems-to-uinavigationbar/)
¿Ha considerado utilizar la propiedad de la barra de herramientas del controlador de navegación?
Utilicé la respuesta JRTurtons en Xcode 4.5, iOS 6 y lo implementé así y funciona:
// Two buttons at the right side of nav bar
UIBarButtonItem *addAttachButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addAttachmentClicked:)];
UIBarButtonItem *sendButton = [[UIBarButtonItem alloc] initWithTitle:LS(@"Send") style:UIBarButtonItemStyleBordered target:self action:@selector(sendClicked:)];
self.navigationItem.rightBarButtonItems = @[addAttachButton,sendButton];
Sin embargo, debo mencionar, que UIBarButtonSystemItemPageCurl no funciona así.
agregar cualquier diseño al controlador de navegación en XCode es fácil.
agrega una UIView a tu escena agrega los botones que necesitas a la UIView y luego arrastra y suelta la UIView al espacio correcto en el navegadorController
de hecho, hay un poco de hacky, pero al mismo tiempo, una forma más limpia de hacer esto: simplemente defina una categoría en UINavigationItem, como:
UINavigationItem + Toolbars.h:
@interface UINavigationItem (Toolbars)
@property (nonatomic, retain) IBOutlet UIToolbar * rightToolBar;
@property (nonatomic, retain) IBOutlet UIToolbar * leftToolBar;
- (void)setRightToolBar:(UIToolbar *)_rightToolBar;
- (UIToolbar *)rightToolBar;
- (void)setLeftToolBar:(UIToolbar *)_leftToolBar;
- (UIToolbar *)leftToolBar;
@end
UINavigationItem + Toolbars.m:
#import "UINavigationItem+Toolbars.h"
@implementation UINavigationItem (Toolbars)
- (void)setRightToolBar:(UIToolbar *)_rightToolBar {
self.rightBarButtonItems = _rightToolBar.items;
}
- (UIToolbar *)rightToolBar {
return nil;
}
- (void)setLeftToolBar:(UIToolbar *)_leftToolBar {
self.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:_leftToolBar] autorelease];
}
- (UIToolbar *)leftToolBar {
return nil;
}
@end
Después de hacer eso, solo asigne una salida en la configuración de IB a la barra de herramientas (solo cree una) y disfrute de los botones que aparecen en el elemento de navegación.