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