我有UINavigationController
。我正在尝试在navigationBar的右侧添加多个按钮。我怎样才能做到这一点?
需要什么样的按钮? UIBarButton
或UINavigationItem
?
答案 0 :(得分:80)
从iOS5开始,您可以将一个条形按钮项目数组分配给导航项目的rightBarButtonItems
(注意复数)属性。
答案 1 :(得分:28)
我在Xcode 4.5,iOS 6中使用了JRTurtons的答案并且像这样实现了它并且它可以工作:
// 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];
但是,我应该提一下,UIBarButtonSystemItemPageCurl不能那样工作。
答案 2 :(得分:15)
我确信我在开发人员参考中读到导航栏中的其他按钮不受欢迎。我现在找不到那段话。我自己没有这样做,但发现这个链接似乎正好勾勒出你需要做的事情:(http://www.mattdipasquale.com/blog/2010/11/02/how-to-add-multiple-uibarbuttonitems-to-uinavigationbar/)
您是否考虑过使用导航控制器的工具栏属性?
答案 3 :(得分:1)
将任何设计添加到XCode中的导航控制器都很容易。
在场景中添加UIView 将您需要的按钮添加到UIView 然后将UIView拖放到navigationController
中的右侧空格答案 4 :(得分:0)
实际上甚至有点粗糙,但同时更简洁的做法:只需在UINavigationItem上定义一个类别,如:
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
这样做之后,只需在IB设置中为工具栏指定一个插座(只需创建一个),然后享受导航项目中出现的按钮。
答案 5 :(得分:0)
在Xcode 7.1中(可能更早),您可以通过拖动它们将多个项目添加到UINavigationBar的右侧或左侧。如果您拖动到正确的位置,您会得到一个小的垂直条,指示该项目将被插入。