我有一个UITableView
,其中包含不同类型的单元格。常见的方法是使用不同的UITableViewCell
并根据数据对象重复使用它们。
现在,我有9种不同类型的数据对象。但我的观点类似于带有按钮,评论按钮,用户图像和用户名的Facebook Feed视图。只有中心视图会根据数据对象发生变化。
我的问题是,我是否应该为这些元素使用9种不同类型的单元格,或者我应该使用一个单元格并在创建单元格时添加中心视图?
目前我的方法是使用一个单元格并添加中心视图。如果我们遵循这种方法,UITableViewCell
会被重复使用吗?
答案 0 :(得分:1)
如果使用reuseIdentifier:
初始化单元格并在表格视图上使用dequeueReusableCellWithIdentifier:
方法,则将始终重用表格视图单元格。
至于是否使用单个UITableViewCell
子类或几个子类,它取决于您的9种内容类型之间的差异程度。如果它们都包含相同的UI元素,则使用1个子类是有意义的。否则,只要为每个子类传入不同的唯一标识符,就可以创建多个子类并仍然使用dequeueReusableCellWithIdentifier:
重用单元格。每个子类都将被独立重用。
如果您使用多个单元格类,那么cellForRowAtIndexPath:
就是这样的:
NSString *primaryCellID = @"PrimaryCellID";
NSString *secondaryCellID = @"SecondaryCellID";
if (someCondition) {
CustomTableViewCell1 *cell = [tableView dequeueReusableCellWithIdentifier:primaryCellID];
if (!cell) {
cell = [[CustomTableViewCell1 alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:primaryCellID];
}
return cell;
}
else {
CustomTableViewCell2 *cell = [tableView dequeueReusableCellWithIdentifier:secondaryCellID];
if (!cell) {
cell = [[CustomTableViewCell2 alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:secondaryCellID];
}
return cell;
}