【问题标题】:Having trouble hiding UIBarButtonItems in UINavigationItem在 UINavigationItem 中隐藏 UIBarButtonItems 时遇到问题
【发布时间】:2016-03-15 19:52:10
【问题描述】:

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

的 rootViewController
- (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 的导航栏中显示我的按钮。但是,当我尝试隐藏栏按钮项时,什么也没有发生。我尝试将按钮设置为 nil 并创建 UIBarButtonItem 强属性以保留对我的按钮的引用以便稍后返回到以前的状态,例如

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

我也尝试过通过

引用按钮
self.navigationItem.rightBarButtonItem

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

【问题讨论】:

    标签: objective-c uibarbuttonitem uinavigationitem


    【解决方案1】:

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

    【讨论】:

    • 不幸的是,我试过这个没有任何运气。我正在按照您建议的方式设置我的 UIBarButtonItem,但是当我将其设置为 nil 时,什么也没有发生。
    • 检查你的navigationBar是否在navigationController下,那么你需要从导航控制器而不是视图控制器访问navigationItem。
    【解决方案2】:

    我终于找到了解决办法。我必须执行以下操作:

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

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

    【讨论】:

      猜你喜欢
      • 2011-02-27
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2016-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多