【问题标题】:Does Interface Builder's new IBDesignable attribute work with NSButton and other controls in Cocoa?Interface Builder 的新 IBDesignable 属性是否适用于 NSButton 和 Cocoa 中的其他控件?
【发布时间】:2015-02-11 17:09:56
【问题描述】:

我设法让IBDesignable/IBInspectable 属性与NSViewdirect 子类一起使用,但不适用于NSButton 的直接子类。这让我怀疑实际上 Cocoa 实现是否仅限于 NSView

网络上的几乎每个示例(以及 Apple WWDC 2014 Xcode 视频)都使用 NSView,然后将自定义视图组件从库中拖到画布上(然后更改其类)。

是否可以将IBDesignableNSControlNSButton 等的子类一起使用...?我在网上看到很多使用UIButton的例子。

如果可能,那么您应该从库中将什么拖到画布上?将其作为“自定义视图”是没有意义的。另一方面,没有可用的“自定义控件”。

明确地说,我可以在设计时显示 IBInspectable 属性;但任何更改似乎都不会在设计时实时呈现。

解决方法是将我想在NSView 中创建的任何自定义NSButton 包装起来(通过组合),但这似乎有点不合时宜...

【问题讨论】:

  • 你找到解决办法了吗?

标签: xcode cocoa swift interface-builder ibdesignable


【解决方案1】:

我开始使用自定义 NSButtonNSButtonCell

将按钮从库中拖到画布上并更改其类,并且单元格类不会实时呈现。我认为这是因为 Interface Builder 仍然做了很多自定义的事情来设置 NSButtonCell

对我来说可行的方法是将自定义视图从库中拖到画布上并设置其类。为此,您需要在 NSButtons -initWithCoder: 中设置单元格。

我还发现了一个来自 Apple 的 sample,它带有一个层支持的自定义复选框。

【讨论】:

  • 您能否详细说明“为此,您需要在 NSButtons -initWithCoder: 中设置单元格:”以及为什么会这样。 Apple 最近的文档说不要触摸 buttonCell,所以我没有过多关注“cell”主题。谢谢。
  • 有人有这个样品吗?我收到错误消息“抱歉,找不到该页面。” =(
  • @catlan - 链接已失效
  • 链接已失效,尝试了 Github 的源代码 - sampe 不再起作用(尝试了 checkbox.swift,如果将其作为 nsbutton 添加到情节提要中,它不会呈现)。那些寻找解决方案的人 - 它只适用于拖入 xib/storyboard 的自定义 NSView。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    相关资源
    最近更新 更多