2

根据苹果的文档Creating a Custom View如果您在 Interface Builder 中使用自定义视图代理,则应调用此方法。

如果您尚未为自定义视图创建 Interface Builder 调色板,则可以使用两种技术在 Interface Builder 中创建子类的实例。第一个是使用 Interface Builder 容器面板中的 Custom View 代理项。此视图是您的自定义视图的替身,允许您相对于其他视图定位和调整视图大小。然后,您可以使用检查器指定视图表示的 NSView 的子类。当应用程序加载 nib 文件时,自定义视图代理创建指定视图子类的新实例并使用 initWithFrame: 方法对其进行初始化,并根据需要传递任何自动调整大小标志。然后视图实例会收到一条 awakeFromNib 消息。

不幸的是,在我的情况下它没有被调用。有没有人不得不处理这个问题?

4

1 回答 1

5

部署到最新版本的操作系统时,最新版本的 Xcode 中有新行为。在 NIB 的文件检查器中,查看是否选中了 Runtime Behavior - Instantiation: Prefer coder。如果是,如果您需要/想要-initWithFrame:调用您的自定义视图,请取消选中它。或者,保持选中状态并利用 NIB 加载机器现在将调用-initWithCoder:. 当然,您应该NSCoding通过编码和解码任何对序列化有意义的自定义内部状态来确保您的类属性支持。

于 2015-06-03T02:14:48.427 回答