- 设置dataSource将自动调用其数据源方法。(storyboard\xib\code里设置情况一致)
- 使用registerNib 或 registerClass注册Cell
- (void)registerNib:(UINib *)nib forCellReuseIdentifier:(NSString *)identifier;
- (void)registerClass:(Class)cellClass forCellReuseIdentifier:(NSString *)identifier;
// 使用方式:创建tableView后,用tableView调用,如下:
static NSString *cellIdentifier = @"customCell";
[tableView registerClass:[CustomCell class] forCellReuseIdentifier: cellIdentifier];
注册cell后,使用如下方法创建cell(6.0启用)
static NSString *cellIdentifier = @"customCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: cellIdentifier forIndexPath:indexPath];
没有注册cell, 只能使用如下方法创建cell(更加繁琐,5.0的API)
static NSString *cellIdentifier = @"customCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cennIdentifier];
if (cell = nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
总结:
- 自定义cell时,若使用nib,使用 registerNib: 注册,dequeue时会调用 cell 的
-(void)awakeFromNib
- 不使用nib,使用 registerClass: 注册, dequeue时会调用 cell 的
- (id)initWithStyle:withReuseableCellIdentifier:
- 使用
dequeueReuseableCellWithIdentifier:
可不注册,但是必须对获取回来的cell进行判断是否为空,若空则手动创建新的cell; - 使用
dequeueReuseableCellWithIdentifier:forIndexPath:
必须注册,但返回的cell可省略空值判断的步骤。
网友评论