天天看点

iOS 如何删除UINavigationBar上的UIBarButton

遇到一个很纠结的问题。xib文件中拖拽了一个UINavigationBar,在其上放了一个UIBarButtonItem,现在想删除或者隐藏这个UIBarButtonItem。尝试了一些方法,但都不能达到效果。

iOS 如何删除UINavigationBar上的UIBarButton

尝试方法一:

 NSMutableArray *items = [[self.navBar subviews] mutableCopy];

    if ([items containsObject:self.leftBtn]) {

        [items removeObject:self.leftBtn];

    }

    [self.navBar setItems:items];

程序直接崩溃的。事实上程序根本没有进if判断。

尝试方法二:

 NSMutableArray *items = [[self.navBar items] mutableCopy];

    if ([items containsObject:self.leftBtn]) {

        [items removeObject:self.leftBtn];

    }

    [self.navBar setItems:items];

没有任何效果。

尝试方法三:

查看文档,发现

@property(nonatomic)  CGFloat  width;            // default is 0.0

尝试设置  self.leftBtn.width = 0.01;

没有效果。

尝试方法四:

    [self.navBar popNavigationItemAnimated:YES];

这个比较彻底。UINavigationBar上的文本“help me!!"也直接没了。

iOS 如何删除UINavigationBar上的UIBarButton

尝试方法五: 将UINavigationBar换成UIToolbar,相应ib中的类也需要修改。

NSMutableArray *items = [[self.toolbar items] mutableCopy];

  if ([items containsObject:self.leftBtn]) {

        [items removeObject:self.leftBtn];

    }

   [self.toolbar setItems:items];

然后在toolbar上放置一个label,填上需要的文字即可。可以修饰以下文字来达到预期效果。

iOS 如何删除UINavigationBar上的UIBarButton