xib 用不好在开发中很容易制造各种crash,issue像
1.
[CUINamedImage collectionView:numberOfItemsInSection:]: unrecognized select
or sent to instance 0x8c9a6d0
2.
*** Assertion failure in -[UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:]
3.[UICollectionView
_dequeueReusableViewOfKind:withIdentifier:forIndexPath:viewCategory:]
我想在一个ViewController中自定义一个View,这个View是collectionview
//.h文件 @interface ImageCollectionView : UICollectionView<UICollectionViewDataSource,UICollectionViewDelegate> @property (weak, nonatomic) IBOutlet UICollectionView *imageCollection; +(ImageCollectionView *)instanceTextView; @end //.m文件 #import "ImageCollectionView.h" #import "ImageCollectionViewCell.h" @implementation ImageCollectionView +(ImageCollectionView *)instanceTextView { NSArray* nibView = [[NSBundle mainBundle] loadNibNamed:@"ImageCollectionView" owner:nil options:nil]; return [nibView objectAtIndex:0]; } -(id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if(self) { } return self; } - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ return 12; } - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ static NSString * CellIdentifier = @"CustomCollectCell"; [_imageCollection registerNib:[UINib nibWithNibName:@"ImageCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:CellIdentifier]; ImageCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath]; return cell; } //ImageCollectionViewCell 就不写了
在看xib
在image Collection View 中inspector 继承ImageCollectionView,
在collection View 中outlets 连image Collection View而不是File‘s owner (一般自带xib的控制器都是连File‘s owner)
上面是用xib自定义一个collectionView 的例子。
再看看 创建一个自带xib的ControllerView的情况:
File‘s owner 中custom class 是绑定控制器类AddGoodsController的,连一些协议也就是连 File‘s owner 。
所以,
1.绑定谁,谁就是self,可以在类中self.
2.用xib 自定义view 出现上面的问题基本就是绑定关系的问题
3.xib技巧介绍
时间: 2024-10-08 22:05:04