webentwicklung-frage-antwort-db.com.de

iOS - UINavigationController Hinzufügen mehrerer richtiger Elemente?

Ich habe eine UINavigationController. Ich versuche, auf der rechten Seite meiner Navigationsleiste mehrere Schaltflächen hinzuzufügen. Wie kann ich das erreichen? Welche Art von Knopf braucht es? UIBarButton oder UINavigationItem?

33
aryaxt

Ich bin sicher, dass ich in der Entwicklerreferenz gelesen habe, dass zusätzliche Schaltflächen in der Navigationsleiste verpönt sind. Ich kann diese Stelle jetzt nicht finden. Ich habe es selbst nicht getan, aber diesen Link gefunden, der genau zu beschreiben scheint, was Sie tun müssen: (http://www.mattdipasquale.com/blog/2010/11/02/how-to-add-multiple) -uibarbuttonitems-to-uinavigationbar /)

Haben Sie überlegt, die Symbolleisten-Eigenschaft des Navigationscontrollers zu verwenden?

15
Dean Davids

Ab iOS5 können Sie der rightBarButtonItems-Eigenschaft des Navigationselements (beachten Sie den Plural) ein Feld mit Schaltflächenelementen zuweisen. 

80
jrturton

Ich habe JRTurtons answer in Xcode 4.5, iOS 6 verwendet und es so implementiert und es funktioniert: 

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

Ich sollte jedoch erwähnen, dass UIBarButtonSystemItemPageCurl nicht so funktioniert. 

28
wzbozon

das Hinzufügen eines beliebigen Designs zum Navigations-Controller in XCode ist einfach.

fügen Sie Ihrer Szene eine UIView hinzu Fügen Sie der UIView die erforderlichen Schaltflächen hinzu, und ziehen Sie die UIView in den rechten Bereich des navigationController

1
mihai

es gibt sogar ein bisschen hackig, aber gleichzeitig sauberer: Definieren Sie einfach eine Kategorie für UINavigationItem, wie zum Beispiel:

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

Nachdem Sie dies getan haben, weisen Sie einfach einen Ausgang in den IB-Einstellungen einer Symbolleiste zu (erstellen Sie einfach eine) und genießen Sie die Schaltflächen, die im Navigationselement angezeigt werden.

0
Anton

In Xcode 7.1 (möglicherweise sogar früher) können Sie der rechten oder linken Seite einer UINavigationBar mehrere Elemente hinzufügen, indem Sie sie einfach hineinziehen. Wenn Sie nur an die rechte Stelle ziehen, wird ein kleiner vertikaler Balken angezeigt, der angibt, wo sich das Element befindet eingefügt werden.

0
Rick