我已经通过Interface Builder在BarButton
的左侧添加了一个nav.bar
项目,而我想要的代码只在我的表格视图的编辑模式中显示。但我没有找到任何隐藏属性来设置leftBarButtonItem
(例如:self.navigationItem.leftBarButtonItem.hidden = YES
)。
我只能设置enabled
属性。任何人都知道如何控制leftBarButtonItem
的隐藏和显示属性,请帮忙。
答案 0 :(得分:59)
这项工作我自己尝试了
self.navigationItem.leftBarButtonItem = nil;
self.navigationItem.hidesBackButton = YES;
答案 1 :(得分:8)
我很确定“隐藏”它的唯一方法就是把它弄掉。
self.navigationItem.leftBarButtonItem = nil;
虽然这不是你问题的完美答案,因为这基本上摆脱了你的按钮而不是隐藏它。你要么必须重新创建它,要么保留原始按钮,只需将leftBarButtonItem设置回你的UIBarButtonItem。
答案 2 :(得分: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。 希望得到帮助:]
答案 3 :(得分:4)
您可以使用
// Hide
self.navigationItem.leftBarButtonItem = nil;
// Show
self.navigationItem.leftBarButtonItem = self.myBarButtonItem
关键是确保在开帐单leftBarButtonItem
之前对按钮项有强引用。
@property (strong, nonatomic) IBOutlet UIBarButtonItem *myBarButtonItem;
答案 4 :(得分: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
答案 5 :(得分:2)
文档中没有任何内容暗示条形项具有隐藏属性。
为什么不设置
self.navigationItem.leftBarButtonItem = nil;
当用户未编辑时,请设置
self.navigationItem.leftBarButtonItem = whateverBarButtonItem;
用户在编辑时?这需要每次重新创建按钮或在视图的生命周期内存储它。既不是非常痛苦,也不是,不像隐藏的财产那么容易。
答案 6 :(得分:1)
您可以使用
[self.navigationItem.leftBarButtonItem setEnabled:TRUE];
因为没有其他方法可以隐藏它。所以只需禁用它。
答案 7 :(得分:1)
隐藏/禁用
[self.navigationItem.leftBarButtonItem setEnabled:FALSE];
显示/启用
[self.navigationItem.leftBarButtonItem setEnabled:TRUE];
答案 8 :(得分:0)
好吧,它没有选择,因为我想再次显示它并且不想再创建一个按钮。
所以我做的是
UIBarButtonItem *barButton = (UIBarButtonItem *)self.navBar.topItem.leftBarButtonItem;
barButton.customView.hidden = true;//Hide
barButton.customView.hidden = false;//Show
适合我。 (我的leftBarButtonItem是使用customView创建的)
希望它有所帮助。
答案 9 :(得分:0)
func showOrHideButton() {
isEnabled ? showButton() : hideButton()
}
func showButton() {
navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .compose, target: self, action: #selector(action))
}
func hideButton() {
navigationItem.leftBarButtonItem = nil
}