사용자 지정 UITableViewCell을 디자인하고 http://forums.macrumors.com/showthread.php?t=545061 에있는 스레드에 설명 된 기술을 사용하여 잘로드 할 수 있습니다 . 그러나 해당 메서드를 사용하면 더 이상 재사용 식별자로 셀을 초기화 할 수 없습니다. 즉, 호출 할 때마다 각 셀의 완전히 새로운 인스턴스를 만들어야합니다. 누군가 재사용을 위해 특정 셀 유형을 캐시하는 좋은 방법을 알아 냈지만 여전히 Interface Builder에서 설계 할 수 있습니까?
답변
적절한 메서드 서명을 사용하여 메서드를 구현하기 만하면됩니다.
- (NSString *) reuseIdentifier {
return @"myIdentifier";
}
답변
답변
이제 iOS 5에는 적절한 UITableView 메서드가 있습니다.
- (void)registerNib:(UINib *)nib forCellReuseIdentifier:(NSString *)identifier
답변
이 코드를 처음 어디에서 찾았는지 기억할 수 없지만 지금까지 잘 작동하고 있습니다.
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"CustomTableCell";
static NSString *CellNib = @"CustomTableCellView";
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellNib owner:self options:nil];
cell = (UITableViewCell *)[nib objectAtIndex:0];
}
// perform additional custom work...
return cell;
}
Interface Builder 설정 예 …
답변
이 질문에 대한 답을보십시오.
Interface Builder에서 NSCell 서브 클래스를 디자인 할 수 있습니까?
IB에서 UITableViewCell을 디자인 할 수있을뿐만 아니라, 그렇지 않으면 모든 수동 배선 및 여러 요소의 배치가 매우 지루하기 때문에 바람직합니다. 가능한 경우 모든 요소를 불투명하게 만들도록주의하는 한 성능은 괜찮습니다. 재사용 ID는 UITableViewCell의 속성에 대해 IB에서 설정되며, 대기열에서 빼려고 할 때 코드에서 일치하는 재사용 ID를 사용합니다.
또한 작년에 WWDC의 일부 발표자로부터 IB에서 테이블 뷰 셀을 만들면 안된다는 말을 들었습니다.
답변
iOS 4.0 경부터이 작업을 초고속으로 만드는 구체적인 지침이 iOS 문서에 있습니다.
UITableViewCell 서브 클래 싱에 대해 설명하는 위치로 스크롤하십시오.
답변
다음은 또 다른 옵션입니다.
NSString * cellId = @"reuseCell";
//...
NSArray * nibObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomTableCell" owner:nil options:nil];
for (id obj in nibObjects)
{
if ([obj isKindOfClass:[CustomTableCell class]])
{
cell = obj;
[cell setValue:cellId forKey:@"reuseIdentifier"];
break;
}
}