Iphone 隐藏UIToolbar UIBarButtonims

Iphone 隐藏UIToolbar UIBarButtonims,iphone,objective-c,hide,uibarbuttonitem,uitoolbar,Iphone,Objective C,Hide,Uibarbuttonitem,Uitoolbar,我有一个UIToolbar,我用IB设置了三个按钮,左、中、右。在某些情况下,我不想显示中间按钮。有人知道在UIToolBar中隐藏特定按钮的方法吗?没有隐藏属性,我只能找到setEnable,但这仍然会留下按钮,让用户想知道它的用途是什么。我只想在它实际有用的情况下显示它 提前谢谢 : 您可以使用该属性获取当前项目,然后只需删除不想显示的项目,并将其传递到新的NSArray 如您所见,您还可以设置动画,让用户清楚地看到它。我就是这样做的。。头痛太多了,但这是我能想到的最好办法: NSArray

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

提前谢谢

您可以使用该属性获取当前项目,然后只需删除不想显示的项目,并将其传递到新的
NSArray


如您所见,您还可以设置动画,让用户清楚地看到它。

我就是这样做的。。头痛太多了,但这是我能想到的最好办法:

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

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

我不得不更换线路:

NSArray *finalTabBarArray = [[NSArray alloc] initWithObjects:newToolBarArray, nil];
关于这一点:

NSArray *finalTabBarArray = [newToolBarArray copy];

然后它就完美地工作了。

Mohit的答案是我用过的,但是你不需要特别地将它作为工具栏设置的一个数组。您只需将项数组设置为NSMutableArray。据我所知,这并没有什么真正的优势,但代码少了几行。这样你就可以拿着这个数组,像其他数组一样移动UIButton对象,然后用这个可变数组重置工具栏

[newToolBarArray removeObjectAtIndex:2];
[newToolBarArray removeObjectAtIndex:1];
[toolBar setItems:newToolBarArray];

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

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

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

我知道对于那些在本页寻找解决方案的人来说,这是一条非常古老的思路,给你:

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

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


啊,是的,这很有效。出于某种原因,我原本以为不会,但事实确实如此。谢谢@杰克。这不会隐藏按钮:它会删除按钮。要隐藏按钮,您必须通过
valueForKey:@“\u view”
访问其视图,这可能是正常的,也可能是不正常的。就个人而言,我认为这很好。非常简洁的Nico,即使您的属性使用了非正统的变量命名。通常情况下,“\u1”与自动合成变量关联,而不是与属性本身关联我不能让它工作。我的工具栏是黑色的,我仍然可以看到按钮(在iOS 10上测试)。
    if(// your code Condition) 
{ self.toolbarBtn1.enabled = YES;
 self.toolbarBtn1.tintColor = nil; }
 else
 { self.toolbarBtn1.enabled = NO; 
self.toolbarBtn1.tintColor = [UIColor clearColor]; }