diff --git a/iOS/MasterTimeline/MasterTimelineViewController.swift b/iOS/MasterTimeline/MasterTimelineViewController.swift index 83ec38ea6..808737c34 100644 --- a/iOS/MasterTimeline/MasterTimelineViewController.swift +++ b/iOS/MasterTimeline/MasterTimelineViewController.swift @@ -83,10 +83,6 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner iconSize = AppDefaults.shared.timelineIconSize resetEstimatedRowHeight() - if #available(iOS 15, *) { - tableView.isPrefetchingEnabled = false - } - if let titleView = Bundle.main.loadNibNamed("MasterTimelineTitleView", owner: self, options: nil)?[0] as? MasterTimelineTitleView { navigationItem.titleView = titleView } @@ -579,8 +575,12 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner } @objc private func reloadAllVisibleCells() { - let visibleArticles = tableView.indexPathsForVisibleRows!.compactMap { return dataSource.itemIdentifier(for: $0) } - reloadCells(visibleArticles) + if #available(iOS 15, *) { + reconfigureCells(coordinator.articles) + } else { + let visibleArticles = tableView.indexPathsForVisibleRows!.compactMap { return dataSource.itemIdentifier(for: $0) } + reloadCells(visibleArticles) + } } private func reloadCells(_ articles: [Article]) { @@ -590,6 +590,15 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner self?.restoreSelectionIfNecessary(adjustScroll: false) } } + + private func reconfigureCells(_ articles: [Article]) { + guard #available(iOS 15, *) else { return } + var snapshot = dataSource.snapshot() + snapshot.reconfigureItems(articles) + dataSource.apply(snapshot, animatingDifferences: false) { [weak self] in + self?.restoreSelectionIfNecessary(adjustScroll: false) + } + } // MARK: Cell Configuring