在UITabView中切换选项卡时,防止从内存中删除重叠的控制器

时间:2015-11-19 13:10:15

标签: ios objective-c swift storyboard uistoryboardsegue

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

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

  • 所有segues期望从模态“过度上下文”将覆盖TabView,这不应该发生,所以它必须是模态segue。

  • MapViewController上的definesPresentationContext保留了地图,是的。但是当调用设置控制器时,它嵌入在地图视图导航项下的地图视图中,因此有2个导航栏。这显然也不可能发生。

1 个答案:

答案 0 :(得分:0)

问题在于模态视图。切换回来时,tabbar会显示设置控制器,但无法知道模态调用的内容。将地图视图控制器定义为当前上下文,并在即将出现的设置控制器的viewDidLoad中关闭呈现视图控制器的导航栏。当使用setNavigationBarHidden(true,animated:true)时,它甚至看起来很漂亮。 viewWillAppear是一个很好的地方,可以让它恢复原位并保持动画同步。