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

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

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

到目前为止,我已经找到了两种(不是很漂亮)的解决方法,但是它们很可能会导致应用程序被MAS拒绝:

  • 使用[self valueForKey:@“buttonType”]。这行得通,但是由于该方法不在标题中,因此我认为这是Apple不想让我做的事情。
  • 重写-setButtonType:和-initWithCoder:跟踪手动或从XIB设置的按钮类型。在XIB情况下很麻烦,因为用于将按钮类型保存到磁盘的键没有记录。再说一次,我将使用私有(private)API。

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

    最佳答案

    按钮对其样式一无所知。

    从NSButton的文档中



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

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

    10-09 03:12