【发布时间】: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 中运行。
标签: iphone objective-c xcode interface-builder uitoolbar