以编程方式修改UIToolBar项目

3
我使用Interface Builder创建了一个工具栏。 工具栏中有许多按钮,这些按钮与各种IBAction方法连接在一起。 我想要做的是,在选择一个项目时,通过更改其色调来使另一个项目变灰。
如何获取对BarButtonItem的引用? 我无法看到我可以为每个标签赋予唯一名称的地方,以便我可以特别引用它。
更新
我为工具栏创建了一个IBOutlet,因此现在我可以访问它。 不幸的是,当我尝试设置tintColor时,它会崩溃。 这是我的代码:
UIBarButtonItem *penButton = [_toolBar.items objectAtIndex:3];
UIBarButtonItem *crossButton = [_toolBar.items objectAtIndex:4];

penButton.tintColor = [UIColor darkGrayColor];
crossButton.tintColor = [UIColor whiteColor];

错误信息:
应用程序因捕获到未知异常而终止,异常信息为“NSInvalidArgumentException”,原因是“- [UIBarButtonItem setTintColor:]:向实例0x631df50发送无法识别的选择器”。

你正在测试哪个iOS版本? - NJones
1
你确定你正在测试运行5.0或更高版本的设备或模拟器吗?如果你在低于5.0版本的设备上运行此代码,它将会出现这个确切的错误并崩溃。 - NJones
实际上不是这样的。尽管在构建配置中针对5进行了目标设置,但模拟器却设置为4.3。有趣的是,现在运行我的项目时,我的主列表视图中没有任何内容(列表确实出现了),因此我无法测试是否已经解决了问题! - Chris
1
谢谢,但实际上是Tomasz的答案回答了你如何获取工具栏项的引用问题。我所做的只是推断,由于UIBarButtonItems在iOS 5中识别selector setTintColor,逻辑上推断你没有在运行iOS 5。 - NJones
1个回答

8

试试这个:

NSArray *items = [myUIToolbar items];
for (UIBarButtonItem *barButton in items) {
   //do something with button
}

我该如何将它命名为myUIToolbar?我在界面构建器中找不到选项! - Chris
在IB中,从您的工具栏添加新的引用出口到您的.h文件,并按您想要的名称命名。 - Tomasz Wojtkowiak
我在你写那句话之前就已经发现了,但是当我尝试改变色调时它崩溃了 - 我会更新我的问题。 - Chris
请在您的问题中添加崩溃日志。 - Tomasz Wojtkowiak
你的代码对我有效。将其分成几个部分:首先将UIBarButtomItem获取到本地变量,然后更改色调颜色。 - Tomasz Wojtkowiak
尝试过了但仍然不起作用,我还注意到在 Interface Builder 中,我已将其中一个按钮的初始色调状态设置为 darkGray,但它实际上并没有以该状态开始? - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接