在 UITableView 中切换选项卡时防止从内存中删除覆盖控制器

Prevent removing overlayed controller from memory when switching tab in UITabView

我有一个 TabViewController。它包含一个带有 NavigationItem(带有菜单项的标题栏)的 MapViewController。 MapViewController 本身以模态方式显示另一个控制器(设置),它也有一个 NavigationItem。我的问题:

如果显示设置控制器并且切换到另一个选项卡并返回(设置控制器仍然打开),则底层 MapViewController 将从内存中删除,因此当设置控制器被关闭时,它会显示黑屏,其中地图控制器应该是。如何强制将地图控制器保存在内存中?

问题出在模式视图中。切换回来时,标签栏显示了设置控制器,但无法从模态调用中知道它是什么。将地图视图控制器定义为当前上下文,并在即将到来的设置控制器的 viewDidLoad 中关闭当前视图控制器的导航栏。当使用 setNavigationBarHidden(true, animated: true) 时,它甚至有一个漂亮的外观。 viewWillAppear 是将其放回原位并保持动画同步的好地方。