아래 표시된 테이블 뷰에는 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;
}
. 'cell.textLabel.text'는 확실히 옵션이고 나는 그것을 탐구했다. 그러나'textFields'를 사용하면 유사한 문제가 발생합니다. 그래서 저는이 문제를 해결하기 위해 정말로 열심입니다. –
'dequeueReusableCellWithIdentifier' 대신에 무엇을 할 수 있습니까? –
@Rut, 텍스트 필드에서 직면 한 문제는 무엇입니까? 이 경우 새 레이블을 추가하기 전에 셀에서 이전에 추가 된 모든 하위 뷰를 제거하는 논리가 필요할 수 있습니다. 어쨌든 내 업데이트를 확인하십시오. 그러면 문제가 해결 될 것입니다. – iDev