問題は、セルが再利用されているため、セル スイッチが再利用されていることです。1 つの解決策は、セルを強制的に再利用しないようにすることです。
MyCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
//if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"MyCustomCell" owner:nil options:nil];
for(id currentObject in topLevelObjects){
if([currentObject isKindOfClass:[UITableViewCell class]]){
cell = (MyCustomCell *)currentObject;
break;
}
}
//}
if cell==nil がコメント化されているため、セルが再利用されないことに注意してください。明らかに、メモリの節約などには適していませんが、大きなテーブルビューや奇妙なテーブルビューがなければ、おそらく気付かないでしょう。
もう 1 つの方法は、スイッチをチェックするかどうかを決定するブール値の配列を保持し、その配列をcellForRowAtIndexPath
メソッドで使用することです。