今天项目上用到了UICollectionView,展示效果并不难,就是自定义一个UICollectionViewCell的子类,在这个UICollectionViewCell的就添加了几个图片imageview。imageview是用拖线到.h文件中的
但是一切代理方法写好,cell创建没有问题,cell设置背景颜色也能正常展示。但是imageview一直不能展示。
后来查阅资料,翻了几遍代码,才找到问题出现在自定义cell注册的问题上。
- (void)registerClass:(nullable Class)cellClass forCellWithReuseIdentifier:(NSString *)identifier;
- (void)registerNib:(nullable UINib *)nib forCellWithReuseIdentifier:(NSString *)identifier;
注册自定义cell使用上面两种方法,而我出现imageview无法显示的原因就,我是使用xib创建的自定义cell类,但是我注册却是使用registerClass去注册的。
查资料得知,xib文件的加载是需要mainBundle去加载才能真实加载成功,而registerClass注册的cell是不会用mainBundle遍历加载相应的xib的,所以拖线出来的imageview无法显示!
总结
1,如果自定义的cell是用纯代码实现的,使用registerClass来注册cell;
2,如果自定义的cell中有用xib加载一些控件,要用registerNib来注册;
3,同时如果你的自定义cell是在storyboard中创建,这个cell是不需要注册的。
细节啊,之前没有仔细考虑这一块的东西。个人总结,谢谢!
网友评论