下面显示的 tableView 包含label
. 它们被添加subView
为每个单元格。
当我第一次运行我的程序时,屏幕上出现的单元格具有正确的文本。但是当我滚动表格时,标签中的文本开始混淆。据我了解,创建单元格时,一个单元格的标签会覆盖在另一个单元格的顶部。这已在后两个屏幕截图中显示。每次滚动后,不同的单元格会重叠在一起。(所以没有固定的模式。)我试图通过观察哪个单元格从屏幕上出来以及哪个单元格正在进入来理解这个问题。我试图将此信息与单元格上的标签相关联,但我无法理解。
我请求您帮助我了解造成这种差异的原因。
谢谢!
我的代码的相关部分如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
NSLog(@"s = %d, r = %d", indexPath.section, indexPath.row);
if (indexPath.section == 0)
{
switch(indexPath.row)
{
case 0:
[cell addSubview:classA];
break;
case 1:
[cell addSubview:classB];
break;
case 2:
[cell addSubview:classC];
break;
case 3:
[cell addSubview:classD];
break;
case 4:
[cell addSubview:classE];
break;
default:
break;
}
}
if(indexPath.section == 1)
{
switch(indexPath.row)
{
case 0:
[cell addSubview:classF];
break;
case 1:
[cell addSubview:classG];
break;
case 2:
[cell addSubview:classH];
break;
default:
break;
}
}
if(indexPath.section == 2)
{
switch (indexPath.row)
{
case 0:
[cell addSubview:classI];
break;
case 1:
[cell addSubview:classJ];
break;
case 2:
[cell addSubview:classK];
break;
default:
break;
}
}
return cell;
}