initWithNibName: 和 loadNibNamed
2018-04-17 本文已影响0人
wsmmint
有半年没做过iOS 了,今天写代码跳转到用xib创建页面的时候,一直出错“this class is not key value coding-compliant for the key type.”
TextViewController *vc = [[[NSBundle mainBundle] loadNibNamed:@"TextViewController" owner:self options:nil] lastObject] ;
网上查到的答案不适用我这个问题。后来才发现是加载方法写错了。
用这个加载方法就没问题了:
TextViewController *vc = [[TextViewController alloc] initWithNibName:@"TextViewController" bundle:[NSBundle mainBundle]];
原来是因为loadNibNamed和initWithNibName需要加载的xib文件是不一样的。initWithNibName需要加载的xib文件的File Owner应该是需要加载的类:TextViewController,
而loadNibNamed需要加载的xib文件的File Owner为NSObject。