Pracuję nad aplikacją na iOS, która głównie korzysta z UITableView
. Umożliwia pobieranie stron artykułów z serwera. Mamy> 25000 artykułów; więc zaimplementowałem przewijanie do odświeżenia i nieskończone przewijanie, aby podróżować po kolekcji tytułów. Pobrane są nadal przy użyciu danych podstawowych; NSFetchedResultsController
służy do automatycznej aktualizacji UITableView
.UITableView utrzymuj zwój w poprawnej pozycji podczas aktualizacji NSFetchedResultsController
Jednak zaimplementowałem nieskończone przewijanie, aby być w obu kierunkach; w górę i w dół. Ponieważ użytkownik będzie mógł przewijać tytuły artykułów 25000, muszę usunąć ten, który użytkownik już przewinął. Jeśli użytkownik przewinie się w górę, muszę ponownie wstawić tytuł powyżej bieżącego. Robiąc to, mam ruchome okno wewnątrz kolekcji artykułów.
Wyświetlam moje artykuły według grupy dat za pomocą sekcji i nagłówka.
Problem polega na tym, że ponieważ nieskończone przewijanie odbywa się w obu kierunkach, często usuwam lub dodawam artykuł na wyższej pozycji w tabeli. W rzeczywistości, aby to osiągnąć, muszę zmienić predykat powiązany z NSFetchedResultsController
.
Ten wynik przewinięcia jest pomieszany. Wróciłem do miejsca, gdzie powinno być ish. To nie jest miłe, ponieważ jest to skok (animacja: NIE), jeśli ustawię animację na ON, to porusza się w kółko, zanim wróci do właściwej pozycji. A pozycja nie jest dokładnie taka, jaką powinna być.
Nie jestem pewien, czy dobrze wyjaśniłem mój problem. Myślę, że problem może tkwić w sposobie, w jaki korzystam z UITableView
, ale nie jestem pewien, w jaki sposób powinienem go użyć, aby było lepiej.
Cheers
Próbuję to rozgryźć, nic obiecującego do tej pory. – jessecurry
brzmi dla mnie, że tak naprawdę nie potrzebujesz nieskończonego przewijania (widok tabeli obsługuje wiele wierszy), chyba że faktycznie potrzebujesz danych do obliczenia wysokości wiersza. –
Jak obliczyć nowe przesunięcie w porównaniu do starego? Brzmi dla mnie, to jedyny problem –