diff --git a/iOS/MasterFeed/MasterFeedViewController.swift b/iOS/MasterFeed/MasterFeedViewController.swift index bde039d2c..bca82bbc0 100644 --- a/iOS/MasterFeed/MasterFeedViewController.swift +++ b/iOS/MasterFeed/MasterFeedViewController.swift @@ -27,6 +27,7 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner { return keyboardManager.keyCommands } + var restoreSelection = false override var canBecomeFirstResponder: Bool { return true } @@ -75,6 +76,17 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner { super.viewWillAppear(animated) } + override func viewDidLayoutSubviews() { + super.viewDidLayoutSubviews() + + // We have to delay the selection of the Feed until the subviews have been layed out + // so that the visible area is correct and we scroll correctly. + if restoreSelection { + restoreSelectionIfNecessary(adjustScroll: true) + restoreSelection = false + } + } + // MARK: Notifications @objc func unreadCountDidChange(_ note: Notification) { diff --git a/iOS/SceneCoordinator.swift b/iOS/SceneCoordinator.swift index 09a2f4526..cd951f4e2 100644 --- a/iOS/SceneCoordinator.swift +++ b/iOS/SceneCoordinator.swift @@ -1829,7 +1829,9 @@ private extension SceneCoordinator { } treeControllerDelegate.addFilterException(feedIdentifier) + masterFeedViewController.restoreSelection = true + switch feedIdentifier { case .smartFeed: @@ -1902,6 +1904,8 @@ private extension SceneCoordinator { return false } + masterFeedViewController.restoreSelection = true + switch feedIdentifier { case .smartFeed: