【发布时间】:2011-10-16 15:53:12
【问题描述】:
我有一个UINavigationController。我正在尝试在导航栏的右侧添加多个按钮。我怎样才能做到这一点?
它需要什么样的按钮? UIBarButton 或 UINavigationItem?
【问题讨论】:
标签: iphone objective-c ios uinavigationcontroller
我有一个UINavigationController。我正在尝试在导航栏的右侧添加多个按钮。我怎样才能做到这一点?
它需要什么样的按钮? UIBarButton 或 UINavigationItem?
【问题讨论】:
标签: iphone objective-c ios uinavigationcontroller
从 iOS5 开始,您可以将一组条形按钮项分配给导航项的 rightBarButtonItems(注意复数)属性。
【讨论】:
我在 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 不是这样工作的。
【讨论】:
我确信我在开发人员参考中读到导航栏中的其他按钮是不受欢迎的。我现在找不到那段。我自己没有做过,但发现这个链接似乎准确地概述了你需要做的事情:(http://www.mattdipasquale.com/blog/2010/11/02/how-to-add-multiple-uibarbuttonitems-to-uinavigationbar/)
您是否考虑过使用导航控制器的工具栏属性?
【讨论】:
在 XCode 中向导航控制器添加任何设计都很容易。
在你的场景中添加一个 UIView 将您需要的按钮添加到 UIView 然后将UIView拖放到navigationController中的右侧空间
【讨论】:
在 Xcode 7.1(可能甚至更早)中,您可以将多个项目添加到 UINavigationBar 的右侧或左侧,只需将它们拖入即可。如果您拖动到正确的位置,您会得到一个小的垂直条,指示在哪里该项目将被插入。
【讨论】:
实际上甚至有点老套,但同时做这些事情的方式更简洁:只需在 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 设置中分配一个工具栏(只需创建一个)并享受出现在导航项上的按钮。
【讨论】:
rightBarButtonItems 属性。