問題は、セルが再利用されているため、セルスイッチが再利用されていることです。セルは== nilのはコメントアウト、そうされている場合、細胞が再利用されることはありませんことを
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;
}
}
//}
お知らせ:一つの解決策は、ない再利用すなわちを得るためにあなたの細胞を強制することです。明らかにメモリなどを節約するのには大したことではありませんが、大きなテーブルビューや奇妙なテーブルビューがない場合は、気付かないかもしれません。
もう1つの方法は、スイッチをチェックするかどうかを決定するブール値の配列を保持し、その配列をcellForRowAtIndexPath
メソッドで使用することです。
@AndréCytryn:コーダーの2番目の提案が優れています。セル再利用には理由があります。 'cellForRowAtIndexPath:' –
でこれを処理してみてください。しかし、ブール値の配列はどうすればいいですか?そのスイッチが淡色にならないようにする方法を教えてください。 –
@AndréCytryn:ブール値の配列はcellviewのインデックスに対応します。cellForRowAtIndexPathで知ることができます:特定のスイッチを有効または無効にする必要がある場合。 –