隐藏UINavigationItem的栏按钮(Hiding UINavigationItem'

2019-06-27 19:12发布

我添加了一个BarButton项目到左边nav.bar通过界面生成器和我想这只是在我的表视图的编辑模式下显示的代码。 但我没有发现任何隐藏的属性设置leftBarButtonItem (如: self.navigationItem.leftBarButtonItem.hidden = YES )。

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

Answer 1:

这工作我没有尝试过自己

self.navigationItem.leftBarButtonItem = nil;
self.navigationItem.hidesBackButton = YES;      


Answer 2:

我敢肯定,“隐藏”它是零它是唯一的出路。

self.navigationItem.leftBarButtonItem = nil;

虽然它不是一个完美的回答你的问题,因为这基本上摆脱你的按钮,而不是隐藏它。 你要么必须重新创建或保留原来的按钮四周,只需将leftBarButtonItem回到你的UIBarButtonItem。



Answer 3:

我有一个简单的功能,使这个。 我有这样的导航。 它有形成界面生成器,它有一个背景图像。

@IBOutlet weak var memberBtn: UIBarButtonItem!

你可以隐藏/显示用它:

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

这很容易,但它为我工作。 如您需要,您可以更改tintColor。 希望帮助:]



Answer 4:

您可以使用

// Hide
self.navigationItem.leftBarButtonItem = nil;

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

关键是要确保你有nilling之前的引用按钮项leftBarButtonItem

@property (strong, nonatomic) IBOutlet UIBarButtonItem *myBarButtonItem;


Answer 5:

我刚刚创建低于我自己的“隐藏”功能显示:

- (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


Answer 6:

没有什么文档中建议物品栏有一个隐藏属性。

为什么不设置

self.navigationItem.leftBarButtonItem = nil; 

当用户没有编辑,然后设置

self.navigationItem.leftBarButtonItem = whateverBarButtonItem; 

当用户正在编辑? 这要求重新创建按钮每次或将其存储为视图的生命周期的持续时间。 无论是极其痛苦的,但没有,几乎没有一个.hidden属性容易。



Answer 7:

您可以使用

[self.navigationItem.leftBarButtonItem setEnabled:TRUE];

因为没有其他的方式来隐藏它。 所以只是将其禁用。



Answer 8:

要隐藏/禁用

[self.navigationItem.leftBarButtonItem setEnabled:FALSE];

要显示/启用

[self.navigationItem.leftBarButtonItem setEnabled:TRUE];


Answer 9:

那么使得它无不是一个选项,因为我想再次显示它并没有想再次创建一个按钮。

所以我所做的就是

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

我的作品。 (我leftBarButtonItem使用customView创建)

希望能帮助到你。



Answer 10:

这对我工作的解决方案

UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;


文章来源: Hiding UINavigationItem's bar button