2010-06-04 73 views
12

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

提前致谢!

回答

28

Reset the items

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

你可以使用items属性,然后删除你不希望显示,并通过新的NSArray一个当前项目。如您所见,您还可以将其制作为动画,以便向用户说明。

+0

稀释是,这个工程。出于某种原因,我原本以为它不会,但它确实如此。谢谢! – jmurphy 2010-06-05 19:41:03

+0

@jmurphy:不客气!很高兴你有它的工作。 – 2010-06-05 20:12:06

+6

似乎太多工作只是为了隐藏一个按钮,但它的工作原理。 – 2011-11-30 04:49:02

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

,因为你是用setItem发送阵列是不是有什么功能这并不在这里工作预计。

我不得不更换行:

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

这一个:

NSArray *finalTabBarArray = [newToolBarArray copy]; 

然后,它完美的作品。

0

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

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

,而不是指数的猜测,我加了的UIBarButtonItem一个IBOutlet,然后按名称删除它:

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

当然,它有助于出口连接在设计师:)

+0

非常简洁的尼科,即使您的属性的非正统变量命名。通常,“_”与自动合成的变量相关联,而不是属性本身。 ;) – 2014-10-10 16:18:53

1

我知道这是很老线程,但那些谁看这个网页的解决方案,在这里你去:

随着iOS7,您可以用这种方式来显示/隐藏工具栏的屁股于:

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

相关问题