Mam widok tabeli z potencjałem dla każdej komórki, aby mieć własną wysokość, dlatego nie jest odpowiedni do używania rowHeight
. Zamiast tego w tej chwili używam let indexSet = NSIndexSet(index: 10)
i self.tableView.estimatedRowHeight = 75
. Oznacza to, że wywołuje on funkcję sizeThatFits
w komórce, aby określić jej wysokość. Wszystko działa dobrze.UITableView z dynamicznymi wysokościami komórek przeskakujących po przewinięciu się po przeładowaniu komórki
Problem polega na ponownym ładowaniu komórki wyświetlanej na ekranie. Przewijanie w dół, aby na przykład wyświetlić komórkę 10, a następnie przeładowanie komórki 10, działa dobrze. Ale kiedy zaczniesz przewijać w górę, mijając komórki, które już widziałeś, powracają one do oszacowanej wysokości dla każdej komórki, całkowicie pomijając sizeThatFits
, i tak przeskakuje podczas przewijania. Byłoby niemożliwe, aby podać dokładny lub "wystarczająco dobry" szacowanyRowHeight, tak aby te skoki nie były zauważalne, ponieważ moje komórki będą mogły wyświetlać linię tekstu lub pełny obraz - duża różnica w rozmiar.
Mam ten efekt pokazany tutaj:
Zrobiłem wiele różnych prób w tym, przy użyciu mieszanki heightForRowAtIndexPath, estimatedHeightForRowAtIndexPath .. itp .. Próbowałem różne kawałki porady dotyczące StackOverflow. Nic nie działa.
Mam załączeniu bardzo prosty przykładowy projekt, w którym można spróbować samemu:
https://www.dropbox.com/s/8f1rvkx9k23q6c1/tableviewtest.zip?dl=0
- uruchomić projekt.
- Przewiń, aby zobaczyć komórkę 10.
- Odczekaj 5 sekund, aż komórka się załaduje (stanie się fioletowa).
- Przewiń w górę.
Warto zauważyć - to nie ani, jeśli komórka nie jest widoczna po ponownym załadowaniu. Jeśli jest powyżej lub poniżej bieżącego punktu przewijania, wszystko działa zgodnie z oczekiwaniami.
Nie wystarczy napisać projekt i prosić ludzi, aby dowiedzieć się problem. Zaktualizuj swoje pytanie za pomocą odpowiedniego kodu. – rmaddy
Miałem podobny problem z "UICollectionView". oba są podobne, więc podobne podejście może w tym pomóc. opublikował [odpowiedź tutaj] (https://stackoverflow.com/a/45361410/6744473) – shoe