diff --git a/Tusker/Screens/Main/MainSplitViewController.swift b/Tusker/Screens/Main/MainSplitViewController.swift index 30329717..013845be 100644 --- a/Tusker/Screens/Main/MainSplitViewController.swift +++ b/Tusker/Screens/Main/MainSplitViewController.swift @@ -285,7 +285,9 @@ extension MainSplitViewController: UISplitViewControllerDelegate { // Search screen has special considerations, all others can be transferred directly. if tabNavigationStack.count == 1 || ((tabNavigationStack.first as? ExploreViewController)?.searchController?.isActive ?? false) { exploreItem = .explore - let searchVC = SearchViewController(mastodonController: mastodonController) + // reuse the existing VC, if there is one + let searchVC = getOrCreateNavigationStack(item: .explore).first! as! SearchViewController + // load the view so that the search controller is accessible searchVC.loadViewIfNeeded() let explore = tabNavigationStack.first as! ExploreViewController if let exploreSearchControler = explore.searchController, @@ -316,7 +318,10 @@ extension MainSplitViewController: UISplitViewControllerDelegate { case is ProfileDirectoryViewController: exploreItem = .profileDirectory default: - fatalError("unhandled second-level explore screen: \(tabNavigationStack[1])") + // transfer the navigation stack prepending, the existing explore VC + // if there was other stuff on the explore stack, it will get discarded + toPrepend = getOrCreateNavigationStack(item: .explore).first! + exploreItem = .explore } } transferNavigationStack(from: tabNavController, to: exploreItem!, skipFirst: skipFirst, prepend: toPrepend)