我已经试过这种方法/黑客: http://blog.blackwhale.at/2009/06/uibuttons-in-uinavigationbar/
问题是,这留下淡淡的缝。 我试图嵌套工具栏的背景图片设置为我捕捉到的应该是什么样的图像。 没有工作。 该图像是不适用。 我已经使用嵌套UINavigationBar的也试过和似乎并没有工作。
我见过几个iPhone应用程序这件事。 有谁知道怎么样?
[编辑]我想按钮看起来像正常UIBarButtonItems并且能够使用系统风格类似UIBarButtonSystemItemAdd,UIBarButtonSystemItemRefresh。 我提供的链接做到这一点,除非你可以看到微弱的缝,因为它是嵌套在导航栏一个UIToolbar ..
请不要提这打破了人机界面指南。 (我们知道)。
我很欣赏你提出你的黑客......那要做到这一点的唯一途径!
Answer 1:
为了摆脱背景UIToolbar的(“缝”)的,创建UIToolbar的子类和重写(无效)的drawRect:(的CGRect)RECT方法。 留空白,你的UIToolbar将不再有一个背景。
只是用这个在我自己的项目和伟大的工作。 在评论发现这一点: http://osmorphis.blogspot.com/2009/05/multiple-buttons-on-navigation-bar.html
Answer 2:
的iOS 5.0现在支持多个按钮。 见UINavigationItem iOS的文档。 具体而言,执行以下操作:
属性:
@property(nonatomic, copy) NSArray *leftBarButtonItems;
@property(nonatomic, copy) NSArray *rightBarButtonItems;
@property BOOL leftItemsSupplementBackButton;
方法:
- (void)setLeftBarButtonItems:(NSArray *)items animated:(BOOL)animated;
- (void)setRightBarButtonItems:(NSArray *)items animated:(BOOL)animated;
Answer 3:
我贴的代码两个按钮添加到的导航栏的右侧 。 您可以设置barStyle = -1
,而不是继承UIToolbar
。
Answer 4:
UIView *parentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, myWidth, myHeight)];
// make UIView customView1... (UILabel, UIButton, etc.) with desired frame and settings
[parentView addSubview:customView1];
[customView1 release];
// make UIView customView2... (UILabel, UIButton, etc.) with desired frame and settings
[parentView addSubview:customView2];
[customView2 release];
UIBarButtonItem *customBarButtomItem = [[UIBarButtonItem alloc] initWithCustomView:parentView];
[parentView release];
self.navigationItem.rightBarButtonItem = customBarButtomItem;
[customBarButtomItem release];
Answer 5:
看到uicatalogue例如可在苹果公司的网站上免费......他们用uisegmented控制,以显示正确的地点栏按钮的三个按钮navigaion栏上...
Answer 6:
我不能发表评论,但除了@iworkinprogress我不得不设置UIToolbar背景色来清除:
[toolbar setBackgroundColor:[UIColor clearColor]];
这也是在评论中发现http://osmorphis.blogspot.com/2009/05/multiple-buttons-on-navigation-bar.html 。
Answer 7:
在iOS中4.x之后clearColor似乎对UIToolbar没有影响,而覆盖其的drawRect:没有。
Answer 8:
我想到了我使用所有在我的项目的辅助功能。 基本上,它会检查是否已经存在栏上的按钮,要么添加新的或现有的按钮合并。 所以,你可以调用函数只是一次或多次:
+ (void)AddButtonToBar:(UIViewController *)controller withImage:(NSString *)imageName withAction:(SEL)action withFrame:(CGRect) frame{
UIButton *newButton =[[UIButton alloc] init];
[newButton setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
newButton.frame = frame;
[newButton addTarget:controller action:action forControlEvents:UIControlEventTouchUpInside];
if ([[controller.navigationItem rightBarButtonItems] count] == 0)
[controller.navigationItem setRightBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:newButton]];
else {
NSMutableArray *existingButtons = [[NSMutableArray alloc] initWithArray:[controller.navigationItem rightBarButtonItems]];
[existingButtons addObject:[[UIBarButtonItem alloc] initWithCustomView:newButton]];
[controller.navigationItem setRightBarButtonItems:(NSArray *)existingButtons];
}
}
从视图控制器调用它:
[Helper AddButtonToBar:self withImage:@"imageName.png" withAction:@selector(myAction) withFrame:CGRectMake(0, 0, 24, 24)];
文章来源: How do you add more than one UIBarButton on UINavigationItem.rightBarButtonItem (or leftBarButtonItem)?