我有一个UIToolbar,我使用IB设置了三个按钮,左,中,右。在某些情况下,我不想显示中间按钮。有人知道如何隐藏UIToolBar内的特定按钮吗?没有隐藏属性,我只能找到setEnable,但这仍然留下按钮,让用户想知道它的目的是什么。我想只在实际有用的情况下显示它。
提前致谢!
答案 0 :(得分:28)
-(void)setItems:(NSArray *)items animated:(BOOL)animated
您可以使用items属性获取当前项目,然后删除您不想显示的项目并传入新的NSArray
。
正如您所看到的,您还可以对其进行动画处理以使用户清楚。
答案 1 :(得分:12)
我没有猜测索引,而是为UIBarButtonItem添加了一个IBOutlet,然后按名称删除它:
NSMutableArray *toolBarButtons = [self._toolbar.items mutableCopy];
[toolBarButtons removeObject:self._selectButton]; // right button
[self._toolbar setItems:toolBarButtons];
当然,它有助于连接设计师的插座:)
答案 2 :(得分:6)
这就是我这样做的方式......太头痛但是我能想到的最好:
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 :(得分:1)
这在这里不起作用,因为使用setItem发送的数组不是函数所期望的。
我不得不更换一行:
NSArray *finalTabBarArray = [[NSArray alloc] initWithObjects:newToolBarArray, nil];
这一个:
NSArray *finalTabBarArray = [newToolBarArray copy];
然后它完美无缺。
答案 4 :(得分:1)
Mohit的答案是我使用的答案,但你不需要专门使它成为工具栏设置的NSArray。您可以将项目数组设置为NSMutableArray。没有真正的优势,我知道,但它少了几行代码。这样你可以像对待任何其他带有对象的数组那样获取数组并移动UIButton对象,然后只需使用该可变数组重置工具栏。
[newToolBarArray removeObjectAtIndex:2];
[newToolBarArray removeObjectAtIndex:1];
[toolBar setItems:newToolBarArray];
答案 5 :(得分:1)
我知道这是一个非常古老的主题,但是那些看这个页面寻求解决方案的人,请你走了:
使用iOS7,您可以使用此方法显示/隐藏工具栏按钮:
if(// your code Condition)
{ self.toolbarBtn1.enabled = YES;
self.toolbarBtn1.tintColor = nil; }
else
{ self.toolbarBtn1.enabled = NO;
self.toolbarBtn1.tintColor = [UIColor clearColor]; }