以编程方式将UIButtonBarItem添加到UINavigationBar

时间:2014-03-13 17:57:15

标签: ios objective-c uinavigationbar uibarbuttonitem

我正在尝试以编程方式将UIButtonBarItem添加到UINavigationBar。我有这个类Topbar,在我的一些ViewControllers上导入,然后通过以下方式调用:[self.view addSubview:[Topbar insertTopbar]];

#import "Topbar.h"

@implementation Topbar

+(UINavigationBar*)insertTopbar
{
    UINavigationBar *navBar = [ [UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];

    UINavigationItem *navTitle = [UINavigationItem alloc];
    navTitle.title = @"MyApp";

    UINavigationItem *navAdd = [UINavigationItem alloc];
    navAdd.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemAdd target:self action:@selector(addFood)];

    [navBar setItems:@[navAdd, navTitle] animated:false];
    return navBar;
}

@end

但是当我尝试使用navBar setItems:@[navAdd, navTitle]设置项目时,它会广告"返回" - 按钮 enter image description here

如果我然后遗漏navTitle所以它显示为navBar setItems:@[navAdd],那么" +" -sign会突然出现。好像是" navTitle"推进第一项。 enter image description here

1 个答案:

答案 0 :(得分:1)

尝试以下方法,做了一些微调,现在对我来说工作正常! :)

enter image description here

-(UINavigationBar*)insertTopbar
{
UINavigationBar *navBar = [ [UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
UINavigationItem *navAdd = [UINavigationItem alloc];
navAdd.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemAdd target:self action:@selector(addFood)];
[navBar pushNavigationItem:navAdd animated:YES];
navBar.topItem.title = @"MyApp";
return navBar;
}