我在StackOverflow上读过几个类似的关于这个话题的问题,但它们都不适用于我的情况。
我的应用程序有一个UIToolbar。ToolBar的布局如下所示。
(Button #1) (Button #2) (Button #3) <--- Flex Controller ---> (Button #4)
什么是显示/隐藏Button #3
UIBarButtonItem最有效的方法,因为它位于UIToolbar的中间?
后续
我知道setItems:Animated
方法,但这似乎是有问题的,因为我所有的按钮都是通过IB连接的,并且它们有关联的IBActions。
这是否意味着,当按钮被隐藏时,我需要找到一种保留按钮#3的方法(因为我使用ARC?)我正在寻找添加和删除这些对象的最优/最有效的方法。如果我必须重新创建这个列表,每次我必须显示/隐藏我的3号按钮,这就是我要做的。
这看起来太低效了。
发布于 2012-03-06 16:54:52
我建议以以下方式构建帮助函数:
- (void) setToolbarItems:(BOOL) button3Shown {
NSMutableArray *items = [NSMutableArray arrayWithCapacity:5];
[items addObject:button1];
[items addObject:button2];
if(button3Shown) {
[items addObject:button3];
}
[items addObject:[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]];
[items addObject:button4];
[self.toolbar setItems:[items copy] animated:YES];
}
这样做的好处是,只要需要更新它,就可以随时可用,然后可以轻松地添加/删除按钮。为了使其工作,您需要将实现文件中的按钮作为IBOutlets来使用,并且它们将很容易地被引用以重新构建工具栏。
发布于 2012-03-06 16:38:12
在UIToolBar.h
中,有以下方法:
- (void)setItems:(NSArray *)items animated:(BOOL)animated; // will fade in or out or reorder and adjust spacing
你应该能做这样的事情:
NSMutableArray *items = [toolBar.items mutableCopy];
[items removeObjectAtIndex:2];
[toolBar setItems:items animated:YES];
看看这是不是你想要的方式
发布于 2012-03-06 16:40:12
您需要重置工具栏项,在不需要隐藏按钮的情况下传入一个新数组。有关详细信息,请参见Hide UIToolbar UIBarButtonItems。
https://stackoverflow.com/questions/9587862
复制相似问题