2014-11-18 11 views
13

Her bölüm için tamamlayıcıGörüntüleme ile bir görünümüm var. Her tamamlayıcı Görünümü Bazı düğmelerim var. VeriSource yönteminde collectionView: viewForSupplementaryElementOfKind: atIndexPath: Düğme etiketlerini indexPath.section ile ayarlıyorum. Düğmeye basıldığında bazı temsilci yöntemleri yaptım ve bölümü (button.tag) parametre olarak gönderdim.UICollectionView: Yalnızca ek görünümleri yeniden yüklemek için bir yol var mı?

Her şey gayet iyi çalışıyor, ama burada sorunu geliyor: Ben eklemek veya düğmeleri etiketleri güncellemeniz gerekir bir bölüm silerken

  • ama her bölümde tüm öğeleri yeniden yüklemek istemiyorum.

denedim: viewForSupplementaryElementOfKind: atIndexPath:

  • dataSource yöntemiyle CollectionView'ın supplementaryViews almak için ve her supplementaryView için yöntemini layoutIfNeeded çağırmak, bu şekilde yılında suppitialViews yeniden yükleniyor, ancak bu yaklaşım benim supplementaryViews çoğaltır. Sadece düzeni yeniden edilir collectionView.subviews ve elde sadece supplementaryView ve çağrı içinde
  • için hızlı yöntemi layoutIfNeeded ama yeniden değildir.
  • reloadSections: yöntem, ancak bu yeniden bölümünde

Ohh gelen tüm öğeleri .. Ve ben ekleme ve bölümleri silmek için NSFetchedResultsController (temsilci) kullanın.

Bu konuda bana yardımcı olan var mı? Yalnızca supplementaryView'u yeniden yüklemenin bir yolu var mı? Bu senaryo için başka bir yaklaşım var mı?

Teşekkür ederiz!

+0

:

bunu yapmak için kullanabileceğiniz basit bir yöntem yoktur.Benim * supplementaryView * için özel * UICollectionViewLayoutAttributes * kullanıyorum ve özel niteliklerden biri, bölümü ve NSFetchedResultsController temsilci yönteminde bulunan * NSInteger * öğesidir * controllerDidChangeContent: * bölümleri ekledikten veya sildikten sonra, koleksiyon görünümü düzenini geçersiz kılar. En iyi uygulama olup olmadığından emin değilim, ancak şu anda çalışıyor ve zaman önemlidir :) – Irina

cevap

10

Ek görünümleri yeniden yüklemek için -invalidateLayoutWithContext: kullanabilirsiniz.

UICollectionViewLayoutInvalidationContext belgelerine ve -invalidateSupplementaryElementsOfKind:atIndexPaths: yöntemine bakın (iOS 8'den itibaren kullanılabilir).

+0

['invalidateSupplementaryElementsOfKind'] (https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/ UICollectionViewLayoutInvalidationContext_class/index.html # // apple_ref/occ/instm/UICollectionViewLayoutInvalidationContext/invalidateSupplementaryElementsOfKind: atIndexPaths :) iOS 8 ve higer'da kullanılabilir. – testing

+0

İyi yakalama. Cevabı güncelledim. –

+0

Eski bir soruydu, ancak gelecekteki benzer durumlar için iyi bir fikirdi. Teşekkürler! – Irina

İlgili konular