代码之家  ›  专栏  ›  技术社区  ›  Brian Bethke

在UINavigationItem中隐藏UIBarButtonItems时遇到问题

  •  0
  • Brian Bethke  · 技术社区  · 8 年前

    我目前有一个用Objective-C编写的自定义UINavigationController,它有一个实现

    - (UINavigationItem *)navigationItem
    

    实现如下所示:

    - (UINavigationItem *)navigationItem {
        UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"Map Search"];
    
        item.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];
    
        UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"btn_menu"] style:UIBarButtonItemStylePlain target:self action:@selector(leftBarButtonPressed:)];
    
        item.leftBarButtonItem = leftBarButtonItem;
    
        UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Other Button" style:UIBarButtonItemStylePlain target:self action:@selector(otherButtonPressed:)];
        item.rightBarButtonItem = rightBarButtonItem;
    
        return item;
    }
    

    这工作正常,并按预期在rootViewController的导航栏中显示我的按钮。然而,当我试图隐藏工具栏按钮项时,什么都没有发生。我尝试将按钮设置为零,并创建UIBarButtonItem强属性,以保留对我的按钮的引用,以便稍后返回到以前的状态,例如。

    self.navigationController.navigationItem.rightBarButtonItem = nil;
    ...
    self.navigationController.navigationItem.rightBarButtonItem = _strongPropertyUIBarButtonReference;
    

    我还尝试通过引用按钮

    self.navigationItem.rightBarButtonItem
    

    我试过用alpha属性隐藏这些按钮。我尝试在自定义UINavigationController类中创建一个方法,将条形按钮项引用设置为零。一切都无济于事。任何帮助都将不胜感激。

    2 回复  |  直到 8 年前
        1
  •  0
  •   Abhishek Bhardwaj    8 年前

    当您想在导航栏上添加按钮时,可以创建一个UIBarButtonItem并将其传递给self.navigationItem.rightBarButton Item。 当你想隐藏这个栏按钮时,你只需直接将其设为零。这将隐藏按钮。self.navigationItem。rightBarButtonItem=nil;

        2
  •  0
  •   Brian Bethke    8 年前

    我终于找到了解决办法。我必须做到以下几点:

    self.navigationController.navigationBar.topItem.leftBarButtonItem = nil;
    self.navigationController.navigationBar.topItem.rightBarButtonItem = nil;
    

    浏览导航栏的topItem是关键。然后,我使用强UIBarButtonItem属性恢复到初始未隐藏状态。