【问题标题】:Popping or removing modals after segues转场后弹出或删除模态
【发布时间】:2016-10-12 19:51:10
【问题描述】:

我在情节提要中有 3 个视图控制器。 VC1 通过 segue 连接到 VC2,VC3 通过 segue 连接到 VC2。使用“self.performSegueWithIdentifier”在 IBAction 按钮单击中实现 segues。 VC2 和 VC3 具有半透明背景,并以模态当前上下文呈现。

我试图弄清楚如何在 VC3 出现后从视图堆栈中删除 VC1。我没有任何复杂的代码。请查看链接以获取进一步解释问题的图片。

【问题讨论】:

  • 您想隐藏它,还是将其完全从堆栈中删除(即当您关闭 VC3 和 VC2 时,您是否希望显示 VC1)?如果是前者,则可以控制VC2的透明度。如果是后者,您将无法使用标准转换来完成此操作,您可能需要考虑创建自定义容器视图控制器。
  • 谢谢大家的回复。马克,我现在正在研究容器视图。安德鲁,这些图像来自一个更简单的应用程序。真正的应用程序在每个 VC 上都有很多 UI 元素,因此使用视图而不是 VC 会导致屏幕混乱。
  • 由于我最终使用容器视图,我认为马克的回应应该是答案。
  • 今晚我会写一个正式的答案。

标签: ios swift segue


【解决方案1】:

我查看了您上传的图片。如果两个或所有三个 VC 同时可见,那么为什么要使用 UIViewControllers 而不是 UIViews?如果它应该看起来像图像,那么应该只有 1 个 UIViewController 维护所有内容。你使用 VC 的所有东西都应该是普通的 UIViews。当用户点击下一步时,实例化视图并在屏幕上对其进行动画处理以模拟下一页动画。让多个 UIViewController 可见且处于活动状态是非常不正统的做法,不建议这样做。

如果您对多个可见 VC 有充分的理由,我建议让 VC1 侦听可由 VC3 或任何相关类发送的 NSNotification,该类会告诉 VC1 自行关闭。

【讨论】:

    【解决方案2】:

    为了完全控制 VC1、VC2 和 VC3 之间的转换,我建议使用容器视图控制器。

    特别是,您可以在呈现 VC3 时从视图层次结构中删除 VC1 的视图。

    你可以找到更多关于实现容器视图控制器here的信息。

    【讨论】:

      猜你喜欢
      • 2011-02-10
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      相关资源
      最近更新 更多