自定义的UIView 的xib使用注意

报错信息:

setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key button.'

这个报错,大部分时候适合XIB的拖线有关。

解决方案

1、找到出错的 key,就是报错的控件。 清除控件与对应的UIView文件的关联。

这里的出错是比较常见的,拖线错误,或者之前拖线正确,后来修改outlet的名字都会导致报错。

所以,要认真检查一下。

2、查看你的 outlet 状态


自定义的UIView 的xib使用注意_第1张图片
图1.png

自定义的UIView 的xib使用注意_第2张图片
图2.png

file‘owner 和 xib 的view 都有一个 customView 属性。 两个都需要设置么?

答:一般必须要设置 xib 的view 的customView(这样才能保证连线正确,比如上图1,我的customView就是HeadView 。有一个button和一个label 。)。

files'owner 可以不设置。

如果不小心把files'owner 的customView也设置成了HeadView 。一定要注意,图2 的outlet 不可用。

否则,还是会报错。

总之:不要误把customView 设置到file's owner 上面,而是必须设置到 xib 的 customView 上

自定义的UIView 的xib使用注意_第3张图片

另外:自定义view 的 xib 的使用注意

    1> 如果一个view从xib中加载,就不能用[xxx alloc] init] 和 [xxx alloc] initWithFrame:]创建
       
   2> 如果一个xib经常被使用,应该提供快速构造类方法
   
   3> 如果一个view从xib中加载:
      用代码添加一些子控件,得在 initWithCoder: 和 awakeFromNib 创建 
   4> 如果一个view从xib中加载,会调用initWithCoder: 和 awakeFromNib,不会调用init和initWithFrame:方法
   (因为xib 最终会转化成 代码。所以不会调用。Init 和 initWithFrame)

你可能感兴趣的:(自定义的UIView 的xib使用注意)