自定义 UITableViewCell 无法正确出列



我有一个带有 3 个自定义 UITableViewCell 的 UITableView,我目前正在像这样出排:

    if (indexPath.row == 0) {
         static NSString *CellIdentifier = @"MyCell1";
         MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
         if (cell == nil) {
             cell = [[[MyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
         }
         return cell;
    }
    if (indexPath.row == 1) {
         static NSString *CellIdentifier = @"MyCell2";
         MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
         if (cell == nil) {
             cell = [[[MyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
         }
         return cell;
    }
    if (indexPath.row == 2) {
         static NSString *CellIdentifier = @"MyCell3";
         MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
         if (cell == nil) {
             cell = [[[MyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
         }
         return cell;
    }

我尝试了多种方式执行此操作,但问题是即使我仍然使用不同的标识符将它们全部取消排队,当我滚动 tableView 时,有时我的第一个单元格会出现在我的第三个单元格的位置,反之亦然。 似乎有一些奇怪的缓存正在进行。

有谁知道为什么? 谢谢。

由于您始终分配相同的单元格类,因此您发布的代码没有意义。单元格标识符不用于标识特定单元格,而是用于标识您正在使用的子类。

因此,将代码更改为:

static NSString *CellIdentifier = @"MyCell";
MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
     cell = [[[MyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
return cell;

并根据indexPath.section和indexPath.row在willDisplayCell中正确设置单元格内容:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

最新更新