通过在 windowDidLoad 中使用以下内容,我已成功更改了大多数 xib 窗口上 NSButtonCells 的背景:
[[self.generalOkButton cell] setBackgroundColor:[NSColor blueColor]];
出于某种原因,当我尝试在我的首选项窗口控制器中执行此操作时(其中包括一个带有 NSViews 的工具栏,根据选择的 ToolbarItem 被换出),任何视图中任何按钮的背景颜色都不会改变.
现在我已经逐步完成了代码并确保代码中的按钮确实具有引用(通过 IBOutlet),然后在调用方法更改它之前和之后查看了 backgroundColor。它确实在发生变化,但由于某种原因,该窗口中的任何按钮都没有反映它们的背景发生了变化。
是否有某些原因为什么它在 windowDidLoad 中不起作用,因为 NSViews 正在换入和换出 Window?我尝试将设置背景颜色的代码移动到交换视图的方法,但仍然没有用。
任何想法/建议表示赞赏。谢谢
更新
irc 上的某个人建议我 KVO 观察 NSButtonCell 以查看它是否被改回。
我设置了这个,当我设置颜色时我看到了变化,但就是这样。似乎什么都没有再次改变它......但按钮仍然没有在屏幕上显示正确的背景颜色。
日志:
BGColor was changed: {
kind = 1;
new = "NSCalibratedRGBColorSpace 0 0.423529 0.792157 1";
old = "<null>";
}
更新 2
编写了一个快速示例项目,显示选项卡式按钮颜色行为和非选项卡式按钮颜色行为。它将在限定时间内托管在 Dropbox 上:https ://www.dropbox.com/s/nrl71p4yk6iyp4w/TestButtonColor.zip