在 UITableView 中切换选项卡时防止从内存中删除覆盖控制器
Prevent removing overlayed controller from memory when switching tab in UITabView
我有一个 TabViewController。它包含一个带有 NavigationItem(带有菜单项的标题栏)的 MapViewController。 MapViewController 本身以模态方式显示另一个控制器(设置),它也有一个 NavigationItem。我的问题:
如果显示设置控制器并且切换到另一个选项卡并返回(设置控制器仍然打开),则底层 MapViewController 将从内存中删除,因此当设置控制器被关闭时,它会显示黑屏,其中地图控制器应该是。如何强制将地图控制器保存在内存中?
模态 "over current context" 期望的所有转场都会覆盖 TabView,这不应该发生,所以它必须是模态转场。
MapViewController 上的 definesPresentationContext 保留地图,是的。但是当调用设置控制器时,它嵌入在地图视图导航项下的地图视图中,因此有 2 个导航栏。这显然也不应该发生。
问题出在模式视图中。切换回来时,标签栏显示了设置控制器,但无法从模态调用中知道它是什么。将地图视图控制器定义为当前上下文,并在即将到来的设置控制器的 viewDidLoad 中关闭当前视图控制器的导航栏。当使用 setNavigationBarHidden(true, animated: true) 时,它甚至有一个漂亮的外观。
viewWillAppear 是将其放回原位并保持动画同步的好地方。
我有一个 TabViewController。它包含一个带有 NavigationItem(带有菜单项的标题栏)的 MapViewController。 MapViewController 本身以模态方式显示另一个控制器(设置),它也有一个 NavigationItem。我的问题:
如果显示设置控制器并且切换到另一个选项卡并返回(设置控制器仍然打开),则底层 MapViewController 将从内存中删除,因此当设置控制器被关闭时,它会显示黑屏,其中地图控制器应该是。如何强制将地图控制器保存在内存中?
模态 "over current context" 期望的所有转场都会覆盖 TabView,这不应该发生,所以它必须是模态转场。
MapViewController 上的 definesPresentationContext 保留地图,是的。但是当调用设置控制器时,它嵌入在地图视图导航项下的地图视图中,因此有 2 个导航栏。这显然也不应该发生。
问题出在模式视图中。切换回来时,标签栏显示了设置控制器,但无法从模态调用中知道它是什么。将地图视图控制器定义为当前上下文,并在即将到来的设置控制器的 viewDidLoad 中关闭当前视图控制器的导航栏。当使用 setNavigationBarHidden(true, animated: true) 时,它甚至有一个漂亮的外观。 viewWillAppear 是将其放回原位并保持动画同步的好地方。