Cocoa:未调用自定义视图代理的initWithFrame

时间:2015-06-03 01:23:38

标签: macos cocoa initwithframe

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

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

不幸的是,在我的案例中没有调用它。有人不得不处理这个问题吗?

1 个答案:

答案 0 :(得分:4)

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