隐藏UINavigationItem的栏按钮

时间:2009-08-04 08:27:38

标签: iphone uibarbuttonitem

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

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

10 个答案:

答案 0 :(得分:59)

这项工作我自己尝试了

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

答案 1 :(得分:8)

我很确定“隐藏”它的唯一方法就是把它弄掉。

self.navigationItem.leftBarButtonItem = nil;

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

答案 2 :(得分:6)

我有一个简单的功能来做到这一点。 我有这样的导航。 Navigation Bar 它来自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
    }