14

BarButton在通过 Interface Builder 的左侧添加了一个项目,nav.bar并且在代码中我希望它只显示在我的表格视图的编辑模式中。但我没有找到任何隐藏的属性来设置leftBarButtonItem(如:)self.navigationItem.leftBarButtonItem.hidden = YES

我只能设置enabled属性。任何人都知道如何控制的隐藏和显示属性leftBarButtonItem,请帮助。

4

11 回答 11

61

这个工作我自己试过

self.navigationItem.leftBarButtonItem = nil;
self.navigationItem.hidesBackButton = YES;      
于 2009-11-10T23:27:04.780 回答
8

我很确定“隐藏”它的唯一方法是消除它。

self.navigationItem.leftBarButtonItem = nil;

虽然这不是您问题的完美答案,但因为这基本上摆脱了您的按钮而不是隐藏它。您要么必须重新创建它,要么保留原来的按钮,只需将 leftBarButtonItem 设置回您的 UIBarButtonItem。

于 2009-08-04T08:43:19.080 回答
6

我有一个简单的功能来做到这一点。我有这样的导航。 导航栏 它来自 Interface Builder,它有一个背景图像。

@IBOutlet weak var memberBtn: UIBarButtonItem!

您可以通过以下方式隐藏/显示它:

func hideMemberBtn() {
    memberBtn.isEnabled = false
    memberBtn.tintColor = UIColor.clear
}
func showMemberBtn() {
    memberBtn.isEnabled = true
    memberBtn.tintColor = UIColor.white
}

这很容易,但对我有用。您可以根据需要更改 tintColor。希望得到帮助:]

于 2016-10-10T23:24:22.197 回答
5

您可以使用

// Hide
self.navigationItem.leftBarButtonItem = nil;

// Show
self.navigationItem.leftBarButtonItem = self.myBarButtonItem

关键是确保在 nilling 之前对按钮项有一个leftBarButtonItem引用。

@property (strong, nonatomic) IBOutlet UIBarButtonItem *myBarButtonItem;
于 2014-09-11T18:38:37.470 回答
3

我刚刚创建了自己的“隐藏”功能,如下所示:

- (void)hideClearButton:(BOOL)hide {

    if (hide) {
        self.navigationItem.leftBarButtonItem = nil;
    }
    else {
        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]
                                                 initWithTitle:NSLocalizedString(@"Clear", @"Recents")
                                                 style:UIBarButtonItemStylePlain
                                                 target:self action:@selector(clearAll:)];

    }
}

你可以这样称呼它:

[self hideClearButton:YES]; //hide it

或者

[self hideClearButton:NO];  //show it
于 2013-01-30T15:17:31.507 回答
2

文档中没有任何内容表明条形项目具有隐藏属性。

为什么不设置

self.navigationItem.leftBarButtonItem = nil; 

当用户不编辑时,然后设置

self.navigationItem.leftBarButtonItem = whateverBarButtonItem; 

当用户正在编辑?这需要每次重新创建按钮或在视图的生命周期内存储它。两者都不是非常痛苦,但不,几乎不像 .hidden 属性那么容易。

于 2009-08-04T08:47:03.253 回答
1

您可以使用

[self.navigationItem.leftBarButtonItem setEnabled:TRUE];

因为没有其他方法可以隐藏它。所以只需禁用它。

于 2012-11-14T18:59:07.617 回答
1

隐藏/禁用

[self.navigationItem.leftBarButtonItem setEnabled:FALSE];

显示/启用

[self.navigationItem.leftBarButtonItem setEnabled:TRUE];
于 2014-01-18T13:48:10.677 回答
0

好吧,让它为零不是一个选择,因为我想再次显示它并且不想再次创建按钮。

所以我所做的是

 UIBarButtonItem *barButton =  (UIBarButtonItem *)self.navBar.topItem.leftBarButtonItem;
 barButton.customView.hidden = true;//Hide
 barButton.customView.hidden = false;//Show

为我工作。(我的 leftBarButtonItem 是使用 customView 创建的)

希望能帮助到你。

于 2015-04-16T11:18:06.737 回答
0
func showOrHideButton() {
        isEnabled ? showButton() : hideButton()
    }

 func showButton() {
        navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .compose, target: self, action: #selector(action))
    }

    func hideButton() {
        navigationItem.leftBarButtonItem = nil
    }
于 2020-12-23T10:05:02.843 回答
0

这个解决方案对我有用

UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;
于 2016-04-09T10:52:38.597 回答