Interface Builder的新IBDesignable属性是否适用于Cocoa中的NSButton和其他控件?

13
我已经成功地让 IBDesignable/IBInspectable 属性在直接子类的 NSView 中工作,但在直接子类的 NSButton 中无法使用。这让我开始怀疑 Cocoa 实现是否仅限于使用NSView
几乎每个网上的示例(以及 Apple WWDC 2014 Xcode 视频)都使用NSView,然后将一个自定义视图组件从库中拖到画布上(然后更改其类)。
是否可以在NSControlNSButton的子类中使用IBDesignable?我在网上看到很多使用UIButton的例子。
如果可以,那么你应该从库中拖什么到画布上呢?它不可能是“自定义视图”。另一方面,也没有“自定义控件”可用。
明确一点,我可以让IBInspectable属性在设计时显示出来;但任何更改似乎都不能在设计时实时渲染。
解决方法是将我想要创建的任何自定义NSButton包装在NSView中(通过组合),但这似乎有些黑客行为...

你找到了解决方案吗? - Nuzhdin Vladimir
2个回答

0

我开始尝试自定义NSButtonNSButtonCell

从库中拖动一个按钮到画布上并更改其类和单元格类不会实时渲染。我认为这是因为Interface Builder仍然需要进行许多自定义设置来设置NSButtonCell

对我而言,有效的方法是从库中拖动自定义视图到画布上并设置其类。为了使其工作,您需要在NSButtons的-initWithCoder:中设置单元格。

此外,我在苹果公司的示例中找到了一个带有层支持的自定义复选框。


1
你能详细说明一下 "为了使其工作,您需要在 NSButtons -initWithCoder: 中设置单元格" 以及为什么这样做会起作用吗?最近苹果的文档说不要触摸 buttonCell,所以我没有太关注 "cell" 主题。谢谢。 - Sam
有人有这个示例吗?我遇到了一个错误:“抱歉,找不到该页面。” =( - Nuzhdin Vladimir
@catlan - 这个链接已经失效了。 - Duck
链接失效了,尝试了Github上的源代码 - 示例不再起作用(尝试了checkbox.swift,如果将其添加为nsbutton到storyboard中,则无法呈现)。寻找解决方案的人们 - 它只能与拖入xib/storyboard的自定义NSViews一起使用。 - Marek H

0

您需要将NSButton拖到视图上,然后将自定义类设置为您特定的NSButton子类。不确定为什么从NSView开始时它不起作用。

可以给您提示的是,NSButton特定属性不在“属性检查器”中。因此,在将控件拖到视图上时必须进行一些设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接