隐藏UINavigationItem的酒吧按钮
我已经通过Interface Builder在nav.bar
的左侧添加了一个BarButton
项目,并且在代码中我希望这只能显示在我的表视图的编辑模式中。但我没有发现任何隐藏的财产来设置leftBarButtonItem
(如:self.navigationItem.leftBarButtonItem.hidden = YES
)。隐藏UINavigationItem的酒吧按钮
我只能设置enabled
属性。任何人都知道如何控制leftBarButtonItem
的隐藏和显示属性,请帮助。
我敢肯定,“隐藏”它的唯一方法就是将其省略掉。
self.navigationItem.leftBarButtonItem = nil;
虽然它不是你的问题的完美答案,因为它基本上摆脱了你的按钮,而不是隐藏它。您将不得不重新创建它或保留原始按钮,只需将leftBarButtonItem设置回您的UIBarButtonItem即可。
在文档中没有任何建议栏项具有隐藏属性。
为什么不设置
self.navigationItem.leftBarButtonItem = nil;
当用户没有编辑,然后设置
self.navigationItem.leftBarButtonItem = whateverBarButtonItem;
当用户正在编辑?这需要每次重新创建按钮或在视图生命周期期间存储它。也不是非常痛苦,但不是,就像隐藏的财产一样容易。
尼尔打败了我 - 完全。 – 2009-08-04 08:47:54
这工作我没有尝试过自己
self.navigationItem.leftBarButtonItem = nil;
self.navigationItem.hidesBackButton = YES;
在某些情况下,将它设置为零对我来说不起作用,但将hideBackButton设置为YES正常工作!谢谢。 – 2010-12-22 14:53:34
设置为nil将让navigationItem遵循其默认行为,即在导航控制器的子视图中显示后退按钮,这就是为什么您还需要将hidesBackButton设置为true,如果您不想显示任何内容曾经 – Nycen 2015-02-08 17:40:44
您可以使用
[self.navigationItem.leftBarButtonItem setEnabled:TRUE];
,因为没有其他的方法来隐藏它。所以只需禁用它。
我刚刚创建低于我自己的 “隐藏” 功能显示:
- (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 setEnabled:FALSE];
要显示/启用
[self.navigationItem.leftBarButtonItem setEnabled:TRUE];
您可以使用
// Hide
self.navigationItem.leftBarButtonItem = nil;
// Show
self.navigationItem.leftBarButtonItem = self.myBarButtonItem
的关键是确保你有nilling leftBarButtonItem
前强参考按钮项。
@property (strong, nonatomic) IBOutlet UIBarButtonItem *myBarButtonItem;
好使它成为零是不是一个选择,因为我想再次显示它,并不想再次创建一个按钮。
所以我所做的就是
UIBarButtonItem *barButton = (UIBarButtonItem *)self.navBar.topItem.leftBarButtonItem;
barButton.customView.hidden = true;//Hide
barButton.customView.hidden = false;//Show
为我工作。 (我的leftBarButtonItem是使用customView创建的)
希望它有帮助。
这对我
UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;
解决方案的工作,我有一个简单的功能,使这个。 我有这样的导航。 它来自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。 希望求助:]
感谢您的回复。如果我真的不能隐藏,我也在想这样一种方法。 – Sreehari 2009-08-04 08:48:22