自定义视图代理的initWithFrame没有被调用



根据apple的文档创建自定义视图,如果你在Interface Builder中使用自定义视图代理,则应该调用此方法。

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

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

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

相关内容

  • 没有找到相关文章

最新更新