隐藏 UIToolbar UIBarButtonItems

Posted

技术标签:

【中文标题】隐藏 UIToolbar UIBarButtonItems【英文标题】:Hide UIToolbar UIBarButtonItems 【发布时间】:2011-02-27 15:02:51 【问题描述】:

我有一个 UIToolbar,我使用 IB 设置了三个按钮,左、中和右。在某些情况下,我不想显示中间按钮。有人知道在 UIToolBar 内隐藏特定按钮的方法吗?没有隐藏属性,我只能找到 setEnable 但这仍然会留下按钮,导致用户想知道它的用途是什么。我只想在实际有用的情况下显示它。

提前致谢!

【问题讨论】:

【参考方案1】:

Reset the items:

-(void)setItems:(NSArray *)items animated:(BOOL)animated

您可以使用items 属性获取当前项目,然后只需删除您不想显示的项目并传入新的NSArray

如您所见,您还可以对其进行动画处理以使用户清楚。

【讨论】:

啊,是的,这行得通。出于某种原因,我最初认为它不会,但它确实如此。谢谢! @JayQ。这不会隐藏按钮:它会删除它。要隐藏按钮,您必须通过valueForKey:@"_view" 访问它的视图,这可能会也可能不会。个人觉得还可以。【参考方案2】:

这就是我的做法.. 太头疼了,但这是我能想到的最好的方法:

NSArray *toolBarArray = toolBar.items;
NSMutableArray *newToolBarArray = [NSMutableArray arrayWithArray:toolBarArray];
[newToolBarArray removeObjectAtIndex:2];
[newToolBarArray removeObjectAtIndex:1];
//remove whatever buttons you want to.

NSArray *finalTabBarArray =[[NSArray alloc] initWithObjects:newToolBarArray, nil];
[toolBar setItems:[finalTabBarArray objectAtIndex:0] animated:NO];

【讨论】:

【参考方案3】:

这在这里不起作用,因为您使用 setItem 发送的数组不是函数所期望的。

我不得不换行:

NSArray *finalTabBarArray = [[NSArray alloc] initWithObjects:newToolBarArray, nil];

用这个:

NSArray *finalTabBarArray = [newToolBarArray copy];

然后完美运行。

【讨论】:

【参考方案4】:

Mohit 的答案是我用过的,但您不需要专门将其设为工具栏设置的 NSArray。您可以将项目数组设置为 NSMutableArray。我知道没有真正的优势,但它的代码少了几行。这样您就可以像使用任何其他带有对象的数组一样获取数组并围绕 UIButton 对象移动,然后只需使用该可变数组重置工具栏。

[newToolBarArray removeObjectAtIndex:2];
[newToolBarArray removeObjectAtIndex:1];
[toolBar setItems:newToolBarArray];

【讨论】:

【参考方案5】:

我没有猜测索引,而是为 UIBarButtonItem 添加了一个 IBOutlet,然后按名称将其删除:

NSMutableArray *toolBarButtons = [self._toolbar.items mutableCopy];
[toolBarButtons removeObject:self._selectButton]; // right button
[self._toolbar setItems:toolBarButtons];

当然,它有助于在设计器中连接插座:)

【讨论】:

非常简洁的 Nico,即使您的属性使用非正统的变量命名。通常,“_”与自动合成的变量相关联,而不是与属性本身相关联。 ;)【参考方案6】:

我知道这是一个很老的话题,但是那些在这个页面上寻找解决方案的人,给你:

ios7 中,您可以使用这种方法来显示/隐藏您的工具栏按钮:

    if(// your code Condition) 
 self.toolbarBtn1.enabled = YES;
 self.toolbarBtn1.tintColor = nil; 
 else
  self.toolbarBtn1.enabled = NO; 
self.toolbarBtn1.tintColor = [UIColor clearColor]; 

【讨论】:

我无法让它工作。我的工具栏是黑色的,我仍然可以看到按钮(在 iOS 10 上测试)。

以上是关于隐藏 UIToolbar UIBarButtonItems的主要内容,如果未能解决你的问题,请参考以下文章

UIWebView交互隐藏uitoolbar

单击显示/隐藏 UIToolbar

隐藏 uitoolbar 在顶部留下空隙

如何在分段点击时隐藏 UItoolbar

是否可以隐藏带有动画的 UIToolbar?

UIButton 隐藏在 UIToolbar 后面