내 UICollectionView
의 세포는 로딩시 배경색이 흰색 인 contentview
입니다. 부울 값 (isSplitting)
이 YES
으로 설정된 것으로 가정하여 셀을 선택하여 셀 contentview
의 배경색을 청록색으로 변경할 수 있습니다. 나는 더 많은 세포가 다음 화면에 들어갈 때스크롤 할 때 UICollectionViewCells의 배경색을 변경하지 않는 방법은 무엇입니까?
내 문제가 발생하고 사용자가 셀을 선택하여 시안 그들의 내용 없음의 배경 색상을 변경했습니다.
시안 색 셀이 보이지 않게 스크롤되고 다시 스크롤 할 때 흰색 인 경우가 있습니다. 시안 색이 아닌 셀을보기로 스크롤하여 시안 색으로 표시하는 경우도 있습니다.
다른 indexpath
에로드 될 때 셀이 재사용 대기열에서 삭제되고 배경색이 유지된다는 사실을 알고 있습니다.
화면으로 스크롤 할 때 선택되지 않은 셀의 문제가 해결되었습니다. 그러나 나는 시야에 들어가거나 볼 때 시안 색을 잃어 버리는 특정 셀의 문제를 해결할 수 없었다.
여기에 내가 가지고있는 현재 논리가 cellForItemAtIndexPath
입니다.
if (!isSplitting) {
cell.contentView.backgroundColor = [UIColor whiteColor];
}
else{
for (NSIndexPath *collectionIndexPath in [self.myCollectionView indexPathsForSelectedItems]) {
if (indexPath == collectionIndexPath) {
cell.contentView.backgroundColor = [UIColor cyanColor];
break;
}
else{
cell.contentView.backgroundColor = [UIColor whiteColor];
}
}
}
위의 루프에 대해 동일한 루프를 사용하는 다른 연산이 원하는 결과를 생성하기 때문에 정확한 셀이 실제로 선택된다는 것을 알고 있습니다. 논리는 처음 몇 항목을 선택 (시안 색으로 전환)하고, 오른쪽으로 스크롤하여 10 번째 항목을 선택하면 고장납니다. 왼쪽으로 스크롤하면 첫 번째 커플은 여전히 시안 색이지만 오른쪽으로 다시 스크롤하면 10 번째가 흰색으로 돌아갑니다.
isSplitting 뒤에 논리는 무엇보다 indexPaths을 비교하는 ?? –