2012-11-14 16 views
10

Używam UICollectionView w mojej aplikacji z identyfikatorami gestów na poszczególnych komórkach, które pozwalają użytkownikowi "przesuwać" komórkę, aby odkryć więcej danych pod spodem.Wyłącz wielokrotne użycie komórki na UICollectionView

Problem polega na tym, że bardzo często przeładowuję dane w CollectionView; ponieważ aplikacja otrzymuje aktualizacje raz na 3 sekundy. Powoduje to niepożądane zachowanie, gdy komórki zbierania danych są ponownie wykorzystywane, podczas gdy komórka jest w trakcie przesuwania.

Użytkownik zacznie przesuwać komórkę, aplikacja otrzyma aktualizację, reloadData, a inna komórka rozpocznie odbiór gestu i rozpocznie przesuwanie.

Próbowałem wyłączyć aktualizacje aplikacji w czasie, gdy pojawił się slajd, ale to spowodowało inne komplikacje w aplikacji, więc zastanawiam się, czy istnieje sposób na wyłączenie ponownego użycia komórki (będę miał tylko 20 komórek max, więc nie sądzę, by nastąpił duży spadek wydajności).

Dziękujemy!

+1

Po prostu dzwonisz do reloadData? Co się stanie, jeśli przeładujesz tylko określone komórki, np. wszystkie z wyjątkiem tego, na którym operuje? – jrturton

Odpowiedz

2

Dlaczego nie użyjesz flagi takiej jak needsReload i ustawisz ją, jeśli są dostępne nowe dane. Po slajdzie sprawdzisz tę flagę i w razie potrzeby ponownie załadujesz kolekcję? Czy to nie działa?

Jeśli nie chcesz, aby komórka była ponownie używana, po prostu użyj domyślnego scrollView i umieść w nim wszystkie swoje widoki !?

-5

Wyłączanie ponownego użycia jest proste. Po prostu nie używaj metody dequeueReusableCell. Zamiast po prostu przydzielić, zainicjuj swoje komórki. Byłbym ostrożny z działaniem i pamięcią o tym, że robię to chociaż ...

+0

Próbowałem, że wypełniłem tablicę z wielu komórek, jednakże ja potrzebne, aw cellForRowAtIndexPath kładę: 'MyCustomCell * komórkowe = [self.arrayOfCells objectAtIndex: indexPath.row];' ale awarie aplikacji z następującymi błąd. '*** Brak asercji w - [UICollectionView _createPreparedCellForItemAtIndexPath: withLayoutAttributes:]' – dKrawczyk

+0

@dKrawczyk: Czy możesz wyświetlić pełny komunikat o błędzie? –

+0

'*** Błąd asercji w - [UICollectionView _createPreparedCellForItemAtIndexPath: withLayoutAttributes:], /SourceCache/UIKit_Sim/UIKit-2372/UICollectionView.m: 1138' – dKrawczyk

Powiązane problemy