안녕하세요, 저는 IOS 개발에 익숙하지 않아서 펜촉에서 만들어진 사용자 지정 셀을 사용하는 UITableView
을 만들었습니다. 아래는 내 ViewController
에서 내 코드입니다. 그러나 셀을 올바르게 다시 사용하고 있다고 생각하지 않기 때문에 위아래로 3 번 스크롤하면 응용 프로그램이 다운됩니다. 나는 주변에 봤지만 코드/솔루션의 많은 구식 것 같았다. 내 코드가 도움이된다면 대단히 감사합니다!NIB를 사용하여 사용자 지정 셀 재사용
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"CustomCell";
CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:@"cellIdentifier"];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
for (id currentObject in topLevelObjects){
if ([currentObject isKindOfClass:[UITableViewCell class]]){
cell = (CustomCell *) currentObject;
break;
}
}
}
cell.TITLE.text = [NSString stringWithFormat:@"\"%@\"", [TITLE objectAtIndex:indexPath.row]];
cell.desc.text = [desc objectAtIndex:indexPath.row];
cell.votes.text = [votes objectAtIndex:indexPath.row];
return cell;
}
와우는 고맙습니다. – GFlam
위에서 제안한 것과 같은 코드를 사용하고 있지만 nib 파일에 셀 식별자를 설정하면 위아래로 스크롤 할 때 라벨의 컨트롤이 사라집니다. 그러나 펜촉으로 식별자를 설정하지 않으면 표보기가 매우 느리게 스크롤되지만 데이터가 올바르게 올라갑니다. 어떤 아이디어가 문제 일 수 있습니까? – Anshul
첫 번째로 식별자 설정을 건너 뛰면 셀을 다시 사용하지 않기 때문에 테이블 뷰가 느리게 스크롤되며 모든 셀과 하위 뷰가 다시 만들어집니다. 귀하의 문제는 cellForRowAtIndexPath 메소드에서 셀을 올바르게 구성하지 않는다고 생각할 수 있습니다. 셀 데이터를 업데이트하는 모든 코드가 if (cell == nil) 문 외부에 있는지 확인하십시오. 식별자를 사용하면 셀이 재사용되고 if (cell == nil) 문에서 코드가 호출되지 않기 때문입니다. – Eyal