byłem walić głową o ten problem przez kilka godzin, ale za każdym razem, gdy próbuję coś takiego:Dlaczego funkcja InsertRowsAtIndexPath zawsze powoduje przewijanie TableView do góry?
self.dataArray.append(newCellObj)
a następnie zrobić to:
self.tableView.beginUpdates()
self.tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Top)
self.tableView.endUpdates()
UITableView automatycznie przewiń do u góry strony.
Nawet jeśli próbuję:
self.tableView.scrollEnabled = false
self.tableView.beginUpdates()
self.tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Top)
self.tableView.endUpdates()
UITableView nadal będzie przewinąć do góry nawet przewijanie całkowicie wyłączona. Co dokładnie powoduje przewinięcie ScrollView do góry po wywołaniu insertRowsAtIndexPaths
?
Jedynym rozwiązaniem mam tego problemu jest użycie w tym:
self.tableView.reloadData()
zamiast. Jeśli użyję zamiast tego opcji reloadData, to jest to w porządku, ale potem tracę fajną animację, którą chciałbym zachować.
Mam też self.tableView.scrollsToTop = false
i próbowałem wielu innych konfiguracjach, jak to, które mogłyby wyłączyć przewijanie w jakiś sposób, ale jest coś, co zastąpi to po insertRowsAtIndexPaths
Myślę, że możesz mieć tutaj trochę inny kod reagujący słabo. Masz rację, że nie powinno się przewijać do góry. Czy próbowałeś to zrobić, nie będąc pomiędzy aktualizacjami początku/końca? Czy istnieje inny kod, który * może * być istotny? –
@RyanPoolos Dzięki mate, działa lepiej bez aktualizacji początku/końca dla mnie. : D –