【问题标题】:Change a list of presented view controllers in swift like快速更改呈现的视图控制器列表,例如
【发布时间】:2021-10-18 07:56:00
【问题描述】:

我的应用有复杂的过渡序列:

  1. A 呈现模态 B
  2. B 呈现模态 C
  3. A 呈现 D(在 B 后面)
  4. C 被 D 解雇

问题是如何插入 D。如果是 push-pop 动画,navigationController 有 viewControllers 属性,我可以随意更改。但是在模态视图控制器的情况下该怎么办?

【问题讨论】:

  • @CouchDeveloper 1)我已经有一个代码已经呈现视图控制器并成功推送视图控制器。问题仅在于转换。 2)仔细阅读问题——我可以随意更改viewControllers,然后调用push/pop。它会起作用。问题在于模态表示本身

标签: ios swift modalviewcontroller presentviewcontroller popviewcontroller


【解决方案1】:

我的解决办法是:

  1. A 以 B 作为 rootViewController 呈现模态 NC(UINavigationController 带有隐藏导航栏)
  2. NC 呈现模态 C
  3. NC rootViewController 替换为 D
  4. C 被 NC 解雇

换句话说,我没有找到如何替换呈现/呈现的视图控制器,但我可以将它们构建到导航控制器中。它比内置视图和添加子视图控制器要好,因为您仍然可以使用 present/dismiss 而不会遇到额外的困难。

看来UITabBarController 也可以用于此目的。

【讨论】:

    【解决方案2】:

    您可以将 D 控制器的视图放在控制器 A 上的视图中 - 并像普通视图一样管理它 - 隐藏/显示动画。

    你可以在控制器 A 中有这样的东西:

    let dController = DController()
    if let dView = dController.view {
       self.view.addSubview(dView)
    }
     
    

    【讨论】:

    • 不适合我的情况,因为“A 呈现 D”也意味着 D 可能会被 A 解散。当前 D 被推送(而不是呈现)但它在解散 D 动画时会遇到麻烦
    猜你喜欢
    • 1970-01-01
    • 2019-09-11
    • 2016-11-28
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多