From a07b398cbe5bc583462721f06a34944396ddc9a7 Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Sat, 28 Oct 2023 13:52:54 -0500 Subject: [PATCH] Maybe fix crash due to VC hierarchy consistency check failing on split collapse/expand --- Tusker/Screens/Main/MainSplitViewController.swift | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Tusker/Screens/Main/MainSplitViewController.swift b/Tusker/Screens/Main/MainSplitViewController.swift index d2df9c76..406d1eec 100644 --- a/Tusker/Screens/Main/MainSplitViewController.swift +++ b/Tusker/Screens/Main/MainSplitViewController.swift @@ -214,6 +214,10 @@ extension MainSplitViewController: UISplitViewControllerDelegate { if item == sidebar.selectedItem { itemNavStack = secondaryNavController.viewControllers secondaryNavController.viewControllers = [] + // Sometimes removing a VC from the viewControllers array doesn't immediately remove it's view from the hierarchy + for vc in itemNavStack { + vc.viewIfLoaded?.removeFromSuperview() + } } else { itemNavStack = navigationStacks[item] ?? [] navigationStacks.removeValue(forKey: item) @@ -339,6 +343,11 @@ extension MainSplitViewController: UISplitViewControllerDelegate { let viewControllersToMove = navController.viewControllers.dropFirst(skipFirst) navController.viewControllers.removeLast(navController.viewControllers.count - skipFirst) + // Sometimes removing a VC from the viewControllers array doesn't immediately remove it's view from the hierarchy + for vc in viewControllersToMove { + vc.viewIfLoaded?.removeFromSuperview() + } + if let prepend = prepend { navigationStacks[item] = [prepend] + viewControllersToMove } else {