报错信息:
setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key button.'
这个报错,大部分时候适合XIB的拖线有关。
解决方案
1、找到出错的 key,就是报错的控件。 清除控件与对应的UIView文件的关联。
这里的出错是比较常见的,拖线错误,或者之前拖线正确,后来修改outlet的名字都会导致报错。
所以,要认真检查一下。
2、查看你的 outlet 状态
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 上。
另外:自定义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)