web-dev-qa-db-fra.com

iOS - UINavigationController ajoute-t-il plusieurs bons éléments?

J'ai un UINavigationController. J'essaie d'ajouter plusieurs boutons sur le côté droit de ma barre de navigation. Comment puis-je atteindre cet objectif? Quel type de bouton faut-il? UIBarButton ou UINavigationItem?

33
aryaxt

Je suis sûr que j'ai lu dans la référence du développeur que des boutons supplémentaires dans la barre de navigation sont mal vus. Je ne trouve pas ce passage maintenant. Je ne l'ai pas fait moi-même, mais j'ai trouvé ce lien qui semble décrire exactement ce que vous devez faire: (http://www.mattdipasquale.com/blog/2010/11/02/how-to-add-multiple -uibarbuttonitems-to-uinavigationbar /)

Avez-vous envisagé d'utiliser la propriété toolbar du contrôleur de navigation?

15
Dean Davids

À partir de iOS5, vous pouvez affecter un tableau d'éléments de boutons à la propriété rightBarButtonItems (notez le pluriel) de l'élément de navigation. 

80
jrturton

J'ai utilisé JRTurtons answer dans Xcode 4.5, iOS 6 et l'ai implémenté comme ceci et cela fonctionne: 

// 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];

Cependant, je devrais mentionner que UIBarButtonSystemItemPageCurl ne fonctionne pas comme ça. 

28
wzbozon

l'ajout de n'importe quelle conception au contrôleur de navigation dans XCode est facile.

ajoutez un UIView à votre scène ajoutez les boutons dont vous avez besoin à UIView puis faites-le glisser et déposez-le dans le bon espace dans le contrôleur de navigation.

1
mihai

il y a même un peu de hacky, mais en même temps une façon plus propre de faire ce genre de choses: définissez simplement une catégorie sur UINavigationItem, comme:

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

Après cela, il vous suffit d’attribuer une barre d’outils à une prise dans les paramètres IB et de profiter des boutons apparaissant sur l’item de navigation.

0
Anton

Dans Xcode 7.1 (peut-être même plus tôt), vous pouvez ajouter plusieurs éléments à droite ou à gauche d'un UINavigationBar en les faisant simplement glisser. Si vous faites glisser le curseur au bon endroit, vous obtenez une petite barre verticale qui indique où cet élément être inséré.

0
Rick