Posts

Post not yet marked as solved
0 Replies
623 Views
I'm doing pagination using UITableViewDataSourcePrefetching. The values will be taken from the Realm local storage. I will get an array of objects. These values will be applied to the existing UITableViewDiffableDataSource datasource. After applying snapshot the tableview scrolling to the top. I have verified that all my ChatMessage objects has unique hashValues. How can I prevent the scrolling? Link to the video sample [https://streamable.com/72g1j1) Given my code snippet private func appendLocal(chats chatMessages: [ChatMessage]) { var sections: [String] = chatMessages.map({ $0.chatDateTime.toString() }) sections.removeDuplicates() guard !sections.isEmpty else { return } var snapshot = dataSource.snapshot() let chatSections = snapshot.sectionIdentifiers sections.forEach { section in let messages = chatMessages.filter({ $0.chatDateTime.toString() == section }) /// Checking the section is already exists in the dataSource if let index = chatSections.firstIndex(of: section) { let indexPath = IndexPath(row: 0, section: index) /// Checking dataSource already have some messages inside the same section /// If messages available then add the recieved messages to the top of existing messages /// else only section is available so append all the messages to the section if let item = dataSource.itemIdentifier(for: indexPath) { snapshot.insertItems(messages, beforeItem: item) } else { snapshot.appendItems(messages, toSection: section) } } else if let firstSection = chatSections.first { /// Newly receieved message's section not available in the dataSource /// Add the section before existing section /// Add the messages to the newly created section snapshot.insertSections([section], beforeSection: firstSection) snapshot.appendItems(messages, toSection: section) } else { /// There is no messages available append the new section and messages snapshot.appendSections([section]) snapshot.appendItems(messages, toSection: section) } } dataSource.apply(snapshot, animatingDifferences: false) }
Posted Last updated
.