gpt4 book ai didi

objective-c - 如何确定我是否是具有 buttonType NSSwitchButton 的 NSButton?

转载 作者:太空狗 更新时间:2023-10-30 03:33:47 30 4
gpt4 key购买 nike

我将 NSButtonCell 子类化以自定义绘图(可自定义主题)。我想自定义复选框和单选按钮的绘制方式。

有谁知道如何检测按钮是复选框还是单选按钮?

只有 -setButtonType:,没有 getter,而且 -showsStateBy 和 -highlightsBy 似乎都没有为不适用于带有图像和备用图像的常规按钮的复选框提供任何唯一的返回值。

到目前为止,我已经找到了两个(不是很漂亮)变通办法,但它们可能会使应用程序被 MAS 拒绝:

  1. 使用 [self valueForKey: @"buttonType"]。这可行,但由于该方法不在 header 中,我认为这是 Apple 不希望我做的事情。

  2. 重写 -setButtonType: 和 -initWithCoder: 以跟踪手动设置或从 XIB 设置的按钮类型。这里的问题是 XIB 案例,因为用于将按钮类型保存到磁盘的键没有记录。所以,我还是会使用私有(private) API。

我真的很希望这是 NSButtonCell 的直接替代品,而不是强制客户端代码为复选框使用单独的 ULIThemeSwitchButtonCell 类,为单选按钮使用第三个类。

最佳答案

按钮对其样式一无所知。

来自 NSButton 的文档

Note that there is no -buttonType method. The set method sets various button properties that together establish the behavior of the type. -

您可以使用 tag: 和 setTag:(由 NSButton 从 NSControl 继承)来将按钮标记为复选框或单选按钮。如果您以编程方式执行此操作,那么您应该定义您使用的常量。您还可以在 Interface Builder 中设置标签,但只能设置为整数值(魔数(Magic Number))。

关于objective-c - 如何确定我是否是具有 buttonType NSSwitchButton 的 NSButton?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12936024/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com