天天看點

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