I have a UINavigationController
. I'm trying to add multiple buttons on the right side of my navigationBar. How can I achieve this?
What kind of button does it take? UIBarButton
or UINavigationItem
?
问题:
回答1:
I am sure I read in the developer reference that additional buttons in the navigation bar is frowned upon. I cannot find that passage now. I have not done it myself, but found this link that seems to outline exactly what you need to do: (http://www.mattdipasquale.com/blog/2010/11/02/how-to-add-multiple-uibarbuttonitems-to-uinavigationbar/)
Have you considered using the toolbar property of the navigation controller?
回答2:
As of iOS5 you can assign an array of bar button items to the navigation item's rightBarButtonItems
(note the plural) property.
回答3:
I used JRTurtons answer in Xcode 4.5, iOS 6 and implemented it like this and it works:
// 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];
However, I should mention, that UIBarButtonSystemItemPageCurl doesn't work like that.
回答4:
adding any design to the navigation controller in XCode is easy.
add a UIView to your scene add the buttons you need to the UIView then drag and drop the UIView to the right space in the navigationController
回答5:
there's actually even a bit ore hacky, but at the same time more cleaner way of doing this stuff: just define a category on UINavigationItem, like:
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
After doing that, just assign an outlet in IB settings a toolbar (just create one) and enjoy buttons appearing on the navigation item.
回答6:
In Xcode 7.1 (perhaps even earlier), you can add multiple items to the right or left side of a UINavigationBar just by dragging them in. If you drag to just the right spot, you get a little vertical bar that indicates where that item will be inserted.