ios - 在 UITableView 中切换选项卡时防止从内存中删除覆盖 Controller

标签 ios objective-c swift storyboard uistoryboardsegue

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

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

  • 所有从模态“当前上下文”开始的转场都将覆盖 TabView,这种情况不应该发生,因此它必须是模态转场。

  • 在 MapViewController 上定义PresentationContext 保留 map ,是的。但是,当调用设置 Controller 时,它会嵌入到 map View 导航项下的 map View 中,因此有 2 个导航栏。这显然也是不应该发生的。

最佳答案

问题出在模态视图中。当切换回来时,选项卡栏显示了设置 Controller ,但无法知道它的模态调用是什么。将 map View Controller 定义为当前上下文,并在即将到来的设置 Controller 的 viewDidLoad 中关闭当前 View Controller 的导航栏。当使用 setNavigationBarHidden(true,animated:true) 时,它甚至有一个漂亮的外观。 viewWillAppear 是一个很好的地方,可以让它恢复原状并保持动画同步。

关于ios - 在 UITableView 中切换选项卡时防止从内存中删除覆盖 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33804886/

相关文章:

objective-c - Swift/ObjectiveC 互操作性 : closure property 'not found on object of type *'

iphone - MKAnnotation协议(protocol)的 "coordinate"属性

swift - 当代码块发生变化时如何将其与@State var关联起来

iphone - 捏 MKMapView 时保持中心坐标

ios - 限制表格 View 中的文本字段进入

javascript - js 适用于 ios 10 但不适用于 9?

swift - 在快照监听器中添加一个新文档时的 Firestore 文档读取成本

ios - swift 谷歌地图不显示

iphone - 实时调整粒子文件(.plist)

ios - 基于滑动的导航