2016-07-19 17 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

関連する問題