代码之家  ›  专栏  ›  技术社区  ›  Mads K

以编程方式将UIButtonBarItem添加到UINavigationBar

  •  1
  • Mads K  · 技术社区  · 11 年前

    我正在尝试以编程方式将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] ,“+”符号突然出现。看起来“navTitle”推进了第一项。 enter image description here

    1 回复  |  直到 11 年前
        1
  •  1
  •   Harsh    11 年前

    尝试以下方法,做了一些推特,现在对我来说很好!:)

    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;
    }