在iPad上,没有调用基于UIView的新类的initWithFrame?

时间:2012-04-21 20:11:09

标签: ios uiview uikit

对于单个视图应用程序,添加了一个DrawView类,它是UIView类的子类。

它被用作应用程序的主视图,因此这个类的drawRect方法效果很好,可以绘制东西,但是Xcode生成的代码有一行“//初始​​化代码”指示在initWithFrame内部放置初始化代码,但是我在那里放了一些代码并且没有调用,并且在那里设置了断点,但是它永远不会停在那里?然后我使用通常的方法添加init并且它也没有被调用?

2 个答案:

答案 0 :(得分:3)

尝试覆盖 - (id)initWithCoder:(NSCoder *)编码器。我相信当从一个nib加载一个视图时,它使用这个init方法。请参阅this问题。

答案 1 :(得分:1)

  • initWithCoder: - 如果从Interface Builder nib文件加载视图,建议您实现此方法,并且您的视图需要自定义初始化.nib加载代码不使用initWithFrame:方法来实例化新的视图对象。相反,它使用作为NSCoding协议一部分的initWithCoder:方法。 nib加载代码不使用initWithFrame:方法来实例化新的视图对象。相反,它使用作为NSCoding协议一部分的initWithCoder:方法。 apple's doc

  • initWithFrame: - 视图的默认初始化方法,必须先将新视图对象插入窗口的视图层次结构中,然后才能使用它。如果以编程方式创建视图对象,则此方法是UIView类的指定初始值设定项。

此处提供更多信息:overriding methods

乐意提供帮助:)