以下に表示される tableView には、 が含まれていますlabel
。subView
セルごとに追加されます。
プログラムを初めて実行すると、画面に表示されるセルに正しいテキストが表示されます。しかし、表をスクロールすると、ラベルのテキストが混同され始めます。私が理解していることから、セルが作成されると、あるセルのラベルが別のセルの上に重ねられます。これは、後の 2 つのスクリーンショットに示されています。スクロールするたびに、異なるセルが他のセルの上に重ねられます。(だから決まったパターンはありません。)どのセルが画面から出て、どのセルが入るかを観察して問題を理解しようとしました。この情報をセルのラベルと関連付けようとしましたが、理解できません。
この不一致の原因を理解していただけるよう、ご協力をお願いいたします。
ありがとうございます!
私のコードの関連セクションは次のとおりです。
- (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;
}