14

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

提前致谢!

4

6 回答 6

28

重置项目

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

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

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

于 2010-06-04T04:26:44.067 回答
12

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

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

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

于 2013-08-07T23:23:45.327 回答
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];
于 2012-07-12T07:23:25.233 回答
2

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

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

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

于 2016-04-29T16:40:13.173 回答
1

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

我不得不更换这条线:

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

有了这个:

NSArray *finalTabBarArray = [newToolBarArray copy];

然后它完美地工作。

于 2012-07-12T08:55:23.147 回答
1

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

[newToolBarArray removeObjectAtIndex:2];
[newToolBarArray removeObjectAtIndex:1];
[toolBar setItems:newToolBarArray];
于 2012-09-18T00:46:10.303 回答