在 UINavigationBar 中隐藏或禁用 UIBarButtonItem

Posted

技术标签:

【中文标题】在 UINavigationBar 中隐藏或禁用 UIBarButtonItem【英文标题】:Hide or Disable UIBarButtonItem in UINavigationBar 【发布时间】:2013-03-06 02:31:34 【问题描述】:

我正在展示一个带有 Modal Segue 的 UIViewController。 这个 UIViewController 继承了一个 UINavigationBar,我在导航栏的左侧设置了一个 UIBarButtonItem:

我的问题是,当调用呈现的 UIViewController 的 viewWillAppear 方法时,我试图隐藏 UIBarButtonItem,但 UIBarButtonItem 总是出现。 我为 UIViewController 声明了一个 UIBarButtonItem,名为 myCancelButton,并在 Interface Builder 中引用了它。

这是我迄今为止尝试过的(所有这些都不起作用):

- (void) viewWillAppear:(BOOL)animated

    [super viewWillAppear:animated];

    self.navigationItem.leftBarButtonItem = nil;
    self.navigationItem.backBarButtonItem = nil;
    self.myCancelButton = nil;

    NSMutableArray *barButtonItems = [self.navigationItem.leftBarButtonItems mutableCopy];
    [barButtonItems removeObject:self.myCancelButton];
    self.navigationItem.leftBarButtonItems = barButtonItems;

    [self.navigationItem.leftBarButtonItems delete:self.myCancelButton];

    self.navigationController.navigationItem.leftBarButtonItem = nil;
    barButtonItems = [self.navigationController.navigationItem.leftBarButtonItems mutableCopy];
    [barButtonItems removeObject:self.myCancelButton];
    self.navigationController.navigationItem.leftBarButtonItems = barButtonItems;

    [self.navigationController.navigationItem.leftBarButtonItems delete:self.myCancelButton];

    [self.myCancelButton setWidth:0.01];

    self.navigationItem.hidesBackButton = TRUE;

    //Even setting enabled to false doesn't work:
    [self.myCancelButton setEnabled:FALSE];

【问题讨论】:

【参考方案1】:

这应该可行。

[self.navigationItem setHidesBackButton:YES animated:YES];

【讨论】:

【参考方案2】:

尝试使用这个

self.navigationController.navigationItem.leftBarButtonItem = nil;
[self.navigationController.navigationItem setHidesBackButton:YES];

【讨论】:

我已经在我的原始帖子中尝试过这些:self.navigationController.navigationItem.leftBarButtonItem = nil; self.navigationItem.hidesBackButton = TRUE; 等一下,我有点忙。如果我有空,我会读这个。 你有没有机会找到解决这个问题的方法?

以上是关于在 UINavigationBar 中隐藏或禁用 UIBarButtonItem的主要内容,如果未能解决你的问题,请参考以下文章

如何隐藏 UINavigationBar 和 UITabBar 动画?

iOS 7 UINavigationBar 在视图转换时未隐藏

iOS 7:禁用整个应用程序的 UINavigationBar 半透明

UINavigationBar 隐藏在 statusBar [重复]

UINavigationBar 在滚动/滑动隐藏后将不再显示

隐藏 UIStatusBar / 移动 UINavigationBar