隐藏UIToolbar UIBarButtonItems

时间:2010-06-04 04:19:14

标签: iphone objective-c hide uibarbuttonitem uitoolbar

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

提前致谢!

6 个答案:

答案 0 :(得分:28)

Reset the items

-(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]; }