注意要 -- 注册 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可省略空值判断的步骤。