문제는 셀이 재사용되고있어 셀 스위치가 재사용되고 있다는 것입니다. 셀 == 전무는 주석, 그렇게되면 세포가 재사용되지 않습니다 것을
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;
}
}
//}
주의 사항 : 하나 개의 솔루션이 아닌 재사용 예를 얻기 위해 당신의 세포를 강제하는 것입니다. 분명히 메모리 등을 보존하는 데는별로 좋지 않지만, 크거나 별난 tableview가 없다면 눈치 채지 못할 것입니다.
시도 할 수있는 또 다른 방법은 스위치를 검사해야하는지 여부를 결정하는 부울 값 배열을 유지하고 cellForRowAtIndexPath
메서드에서 해당 배열을 사용하는 것입니다.
@ AndréCytryn : 코더의 두 번째 제안이 더 좋습니다. 셀 재사용은 이유가 있습니다. 'cellForRowAtIndexPath :' –
에서 이것을 처리해보십시오.하지만 boolean 배열을 어떻게해야합니까? 스위치가 흐려지지 않는 것을 어떻게 돕는 지 명확하지 않습니다. –
@ AndréCytryn : 부울 배열은 셀 뷰의 인덱스와 일치하므로 cellForRowAtIndexPath에서 알 수 있습니다 : 특정 스위치를 활성화하거나 비활성화해야하는 경우. –