2016-07-19 10 views
2

콜렉션 뷰 셀에 문제가 있습니다. 내 컬렉션 뷰가 처음로드 할 때, 그 같은 항목을 표시 : 그 방법 내부UICollectionView 재사용 셀 문제

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath; 
{ 


    CalendarCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"CalendarCell" forIndexPath:indexPath]; 

    [cell bindDate:_datesMgr.currentMonthItems[indexPath.row] andNowDate:_datesMgr.nowDate]; 


    // bind events 

    if (_eventsMgr.eventsArray.count > 0){ 

     for (int i = 0; i < _eventsMgr.eventsArray.count ; i ++) { 
      [cell bindConference:_eventsMgr.eventsArray[i]]; 
     } 
    } 


    return cell; 
} 

특정 상황에 따라 사용자 정의 셀 클래스에 서브 뷰를 추가하는 논리이다.

모든 것이 작동하지만 컬렉션보기가 다시로드 될 때 (1 초 후에 강제로 다시로드 한 경우) 일부 셀이 재사용되고 다른 위치에 배치되므로 "오래된"이미지와 하위보기가 표시됩니다.

나는 uicollection 뷰가 강제로 셀을 재사용하는 것을 막을 수있는 가능한 해결책을 발견했다. (매번 새로운 셀을로드한다). 이 일을 할 수있는 방법이 있습니까?

+1

'당신이 파단의 새로운 인스턴스를 생성하고 코드에 추가하는이 수단 cell' 정의에 하위 뷰를 추가하는 기존의 콘텐츠를 재설정하기위한 prepareForReuse 방법을 구현하려고? 그렇다면 오래된 하위 뷰가 있으면 제거해야합니다. – Akhilrajtr

+0

@Akhilrajtr 정확히 어떻게해야하나요? 내가 그들을 삭제해야하는 경우를 찾으십시오. –

+0

각 하위보기에 특정 태그를 추가하고 해당 태그를 사용하여보기를 제거하거나 특정보기에서 모든 하위보기를 제거하고 다시 추가 할 수 있습니다. 사용자 지정 셀을 사용하고 있으므로 xib 또는 스토리 보드에서 셀을 디자인하고 콘센트를 사용하여 새 인스턴스를 만들고 각 시간을 추가하는 대신 값을 각각 설정할 수 있습니다. – Akhilrajtr

답변

9

는 사용자 정의 UICollectionViewCell

-(void)prepareForReuse { 
    [super prepareForReuse]; 
    self.yourimageview.image = nil; //and etc. 
} 
+0

올바른 셀 (올바른 이미지)이 있고 이미지를 nil로 설정하면? –

+0

이미지를 nil로 설정하면 (실제로는 추가 된 하위 뷰를 제거해야 함) 'cellForItemAtIndexPath'에서 이미지가 재설정됩니다 (또는 하위 뷰가 다시 추가됨) – Paulw11

+0

모든 이미지가 nil로 설정되고 언제 셀이 다시로드되는지 indexPath에 의해 데이터를 다시 설정하십시오 – iSashok