Macos Cocoa:未调用来自自定义视图代理的initWithFrame
根据苹果的文档,如果您在Interface Builder中使用自定义视图代理,则应调用此方法 如果尚未为自定义视图创建Interface Builder调色板,则可以使用两种技术在Interface Builder中创建子类的实例。第一种是使用Interface Builder容器选项板中的自定义视图代理项。此视图是自定义视图的替代视图,允许您相对于其他视图定位和调整视图的大小。然后使用inspector指定视图表示的NSView的子类。当应用程序加载nib文件时,自定义视图代理将创建指定视图子类的新实例,并使用initWithFrame:方法对其进行初始化,并根据需要传递任何自动调整大小的标志。视图实例随后接收一条awakeFromNib消息Macos Cocoa:未调用来自自定义视图代理的initWithFrame,macos,cocoa,initwithframe,Macos,Cocoa,Initwithframe,根据苹果的文档,如果您在Interface Builder中使用自定义视图代理,则应调用此方法 如果尚未为自定义视图创建Interface Builder调色板,则可以使用两种技术在Interface Builder中创建子类的实例。第一种是使用Interface Builder容器选项板中的自定义视图代理项。此视图是自定义视图的替代视图,允许您相对于其他视图定位和调整视图的大小。然后使用inspector指定视图表示的NSView的子类。当应用程序加载nib文件时,自定义视图代理将创建指定视图
不幸的是,在我的情况下,它没有被调用。有人必须处理这个问题吗?在部署到最新版本的操作系统时,最新版本的Xcode出现了新的行为。在NIB的文件检查器中,查看是否选中了运行时行为-实例化:首选编码器。如果是,如果需要/想要为自定义视图调用
-initWithFrame:
,请取消选中它。或者,保持选中状态,并利用NIB加载机制现在将调用-initWithCoder:
这一事实。当然,您应该确保您的类属性支持NSCoding
,方法是对任何有意义的自定义内部状态进行编码和解码。任何等效的实例化:优先选择脚本的编码器选项?