if (cell == nil)
コードをブロックから取り出さないでください。代わりに、作成するセルの代表的な識別子を作成します。セルのすべてのコンテンツが識別子で参照されていることを確認してください。たとえば、3つの数字が表示されている場合は、そのようなコンテンツを含むセルのみを参照する一意の方法で、これらの3つの数字を識別子に含めるようにしてください。
クラスに、NSNumberオブジェクト内にラップされたint値を持つarray1、array2、およびarray3の3つのNSArrayプロパティがあるとします。これらのNSArrayを使用してUITableViewを埋めたい場合、これが私が行うことです。
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *identifier = [NSString stringWithFormat:@"%@-%@-%@",
[[array1 objectAtIndex:indexPath.row] intValue],
[[array2 objectAtIndex:indexPath.row] intValue],
[[array3 objectAtIndex:indexPath.row] intValue]];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:identifier] autorelease];
//Build your cell here.
}
return cell;
}