2013-02-25 5 views
1

UICollectionView의 세포는 로딩시 배경색이 흰색 인 contentview입니다. 부울 값 (isSplitting)YES으로 설정된 것으로 가정하여 셀을 선택하여 셀 contentview의 배경색을 청록색으로 변경할 수 있습니다. 나는 더 많은 세포가 다음 화면에 들어갈 때스크롤 할 때 UICollectionViewCells의 배경색을 변경하지 않는 방법은 무엇입니까?

enter image description here

내 문제가 발생하고 사용자가 셀을 선택하여 시안 그들의 내용 없음의 배경 색상을 변경했습니다.

시안 색 셀이 보이지 않게 스크롤되고 다시 스크롤 할 때 흰색 인 경우가 있습니다. 시안 색이 아닌 셀을보기로 스크롤하여 시안 색으로 표시하는 경우도 있습니다.

다른 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 번째가 흰색으로 돌아갑니다.

+0

isSplitting 뒤에 논리는 무엇보다 indexPaths을 비교하는 ?? –

답변

1

사용 ISEQUAL : 오히려 ==

if ([indexPath isEqual:collectionIndexPath]) { 
+0

이 문제가 해결되었습니다. 고마워. – IkegawaTaro

관련 문제