以编程方式修改 UIToolBar 项

Posted

技术标签:

【中文标题】以编程方式修改 UIToolBar 项【英文标题】:Modify UIToolBar items programmatically 【发布时间】:2012-01-08 12:41:22 【问题描述】:

我使用 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 版本? 您确定要在运行 5.0 或更高版本的设备或模拟器上进行测试吗?如果您在低于 5.0 的设备上运行此代码,它会因这个确切的错误而崩溃。 其实没有。尽管在构建配置中以 5 为目标,但模拟器设置为 4.3。有趣的是,当我现在运行我的项目时,我的主列表视图中什么都没有出现(虽然列表出现了)所以我实际上无法测试它是否修复了它! NJones - 将此作为答案,以便我接受 谢谢,但实际上是 tomasz 的回答实际上回答了您关于如何获取对工具栏项目的引用的问题。我所做的只是因为 UIBarButtonItems 确实识别了 iOS 5 中的选择器 setTintColor,因此合乎逻辑的结论是您没有在 iOS 5 中运行。 【参考方案1】:

试试这个:

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

【讨论】:

如何给它命名 myUIToolbar ?我在界面生成器中找不到选项! 在 IB 中将新的引用出口从您的工具栏添加到您的 .h 文件中,并根据需要命名。 在你写之前就想通了,但是当我尝试改变色调时它崩溃了 - 我会更新我的问题 请在您的问题中添加崩溃日志 您的代码对我有用。将其拆分为部分:首先将 UIBarButtomItem 获取到局部变量,然后更改色调颜色。

以上是关于以编程方式修改 UIToolBar 项的主要内容,如果未能解决你的问题,请参考以下文章

无法使用白色按钮项色调使 UIToolBar 变为黑色(ios 9,Swift)

以编程方式位于底部的 UIToolbar

以编程方式创建 UIToolbar

如何以编程方式将平面背景 UIColor 渲染为 UIToolbar 的背景?

以编程方式定位 UIToolbar 的最佳方式(有或没有 UIToolbarDelegate)?

UIToolbar外观用于以编程方式添加工具栏