tableViewCell 及collectionCell xib是否注册

注意要 -- 注册 xib

1
2
3
4
5
6
7
- ( void )awakeFromNib {
 
     [ super  awakeFromNib];
     
     UINib *nib = [UINib nibWithNibName:@ "MyPurchaseRecordFooterCell"  bundle:[ NSBundle  mainBundle]];
     [ self .collectionView registerNib:nib forCellWithReuseIdentifier:@ "MyPurchaseRecordId" ];
}

 

1
2
3
4
5
6
7
8
9
10
11
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:( NSIndexPath  *)indexPath {
<br>     // 在这里注册 nib  也可以
      // UINib *nib = [UINib nibWithNibName:@"MyPurchaseRecordFooterCell" bundle:[NSBundle mainBundle]];
     // [collectionView registerNib:nib forCellWithReuseIdentifier:@"MyPurchaseRecordId"];
     
     MyPurchaseRecordFooterCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@ "MyPurchaseRecordId"  forIndexPath:indexPath];
 
     cell.model =  self .collectionModelM[indexPath.item];
     
     return  cell;
}

 

2.从xib 创建tableViewCell

可以在创建tableview的时候,直接 注册nib

1
2
self .tableView.backgroundColor = xxxx;
[ self .tableView registerClass:[CustomCell  class ] forCellReuseIdentifier:@ "CustomCell" ];
这样你在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath这个方法里,你就可以省下这些代码:
 
1
2
3
4
5
static  NSString  *ID = @ "cell" ;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
if  (cell ==  nil ) {
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID]; 
}
而只需要

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

 

3.需不需要注册?
使用dequeueReuseableCellWithIdentifier:可不注册,但是必须对获取回来的cell进行判断是否为空,若空则手动创建新的cell;
使用dequeueReuseableCellWithIdentifier:forIndexPath:必须注册,但返回的cell可省略空值判断的步骤。

猜你喜欢

转载自blog.csdn.net/haixing_zfj/article/details/68066767