我BarButton
在通过 Interface Builder 的左侧添加了一个项目,nav.bar
并且在代码中我希望它只显示在我的表格视图的编辑模式中。但我没有找到任何隐藏的属性来设置leftBarButtonItem
(如:)self.navigationItem.leftBarButtonItem.hidden = YES
。
我只能设置enabled
属性。任何人都知道如何控制的隐藏和显示属性leftBarButtonItem
,请帮助。
我BarButton
在通过 Interface Builder 的左侧添加了一个项目,nav.bar
并且在代码中我希望它只显示在我的表格视图的编辑模式中。但我没有找到任何隐藏的属性来设置leftBarButtonItem
(如:)self.navigationItem.leftBarButtonItem.hidden = YES
。
我只能设置enabled
属性。任何人都知道如何控制的隐藏和显示属性leftBarButtonItem
,请帮助。
这个工作我自己试过
self.navigationItem.leftBarButtonItem = nil;
self.navigationItem.hidesBackButton = YES;
我很确定“隐藏”它的唯一方法是消除它。
self.navigationItem.leftBarButtonItem = nil;
虽然这不是您问题的完美答案,但因为这基本上摆脱了您的按钮而不是隐藏它。您要么必须重新创建它,要么保留原来的按钮,只需将 leftBarButtonItem 设置回您的 UIBarButtonItem。
我有一个简单的功能来做到这一点。我有这样的导航。 它来自 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。希望得到帮助:]
您可以使用
// Hide
self.navigationItem.leftBarButtonItem = nil;
// Show
self.navigationItem.leftBarButtonItem = self.myBarButtonItem
关键是确保在 nilling 之前对按钮项有一个强leftBarButtonItem
引用。
@property (strong, nonatomic) IBOutlet UIBarButtonItem *myBarButtonItem;
我刚刚创建了自己的“隐藏”功能,如下所示:
- (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
文档中没有任何内容表明条形项目具有隐藏属性。
为什么不设置
self.navigationItem.leftBarButtonItem = nil;
当用户不编辑时,然后设置
self.navigationItem.leftBarButtonItem = whateverBarButtonItem;
当用户正在编辑?这需要每次重新创建按钮或在视图的生命周期内存储它。两者都不是非常痛苦,但不,几乎不像 .hidden 属性那么容易。
您可以使用
[self.navigationItem.leftBarButtonItem setEnabled:TRUE];
因为没有其他方法可以隐藏它。所以只需禁用它。
隐藏/禁用
[self.navigationItem.leftBarButtonItem setEnabled:FALSE];
显示/启用
[self.navigationItem.leftBarButtonItem setEnabled:TRUE];
好吧,让它为零不是一个选择,因为我想再次显示它并且不想再次创建按钮。
所以我所做的是
UIBarButtonItem *barButton = (UIBarButtonItem *)self.navBar.topItem.leftBarButtonItem;
barButton.customView.hidden = true;//Hide
barButton.customView.hidden = false;//Show
为我工作。(我的 leftBarButtonItem 是使用 customView 创建的)
希望能帮助到你。
func showOrHideButton() {
isEnabled ? showButton() : hideButton()
}
func showButton() {
navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .compose, target: self, action: #selector(action))
}
func hideButton() {
navigationItem.leftBarButtonItem = nil
}
这个解决方案对我有用
UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;