首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >显示/隐藏UIBarButtonItem,位于UIToolbar的中间

显示/隐藏UIBarButtonItem,位于UIToolbar的中间
EN

Stack Overflow用户
提问于 2012-03-06 16:32:52
回答 5查看 6.5K关注 0票数 2

我在StackOverflow上读过几个类似的关于这个话题的问题,但它们都不适用于我的情况。

我的应用程序有一个UIToolbar。ToolBar的布局如下所示。

代码语言:javascript
运行
复制
(Button #1) (Button #2) (Button #3) <--- Flex Controller ---> (Button #4)

什么是显示/隐藏Button #3 UIBarButtonItem最有效的方法,因为它位于UIToolbar的中间?

后续

我知道setItems:Animated方法,但这似乎是有问题的,因为我所有的按钮都是通过IB连接的,并且它们有关联的IBActions。

这是否意味着,当按钮被隐藏时,我需要找到一种保留按钮#3的方法(因为我使用ARC?)我正在寻找添加和删除这些对象的最优/最有效的方法。如果我必须重新创建这个列表,每次我必须显示/隐藏我的3号按钮,这就是我要做的。

这看起来太低效了。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-03-06 16:54:52

我建议以以下方式构建帮助函数:

代码语言:javascript
运行
复制
- (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来使用,并且它们将很容易地被引用以重新构建工具栏。

票数 4
EN

Stack Overflow用户

发布于 2012-03-06 16:38:12

UIToolBar.h中,有以下方法:

代码语言:javascript
运行
复制
- (void)setItems:(NSArray *)items animated:(BOOL)animated;   // will fade in or out or reorder and adjust spacing

你应该能做这样的事情:

代码语言:javascript
运行
复制
NSMutableArray *items = [toolBar.items mutableCopy];
[items removeObjectAtIndex:2];
[toolBar setItems:items animated:YES];

看看这是不是你想要的方式

票数 5
EN

Stack Overflow用户

发布于 2012-03-06 16:40:12

您需要重置工具栏项,在不需要隐藏按钮的情况下传入一个新数组。有关详细信息,请参见Hide UIToolbar UIBarButtonItems

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9587862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档