隐藏 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的主要内容,如果未能解决你的问题,请参考以下文章