我有一个基本场景:
我使用 self.present(, animated:, completion:)
模态地呈现一个 VC。
有时由于此模态 VC 中的交互,我需要关闭一个模态并打开另一个模态。
所以我做了以下事情:
weak var presenter = self.presentingViewController
let newVc = UIViewController()
presenter?.dismiss(animated: true, completion: {
presenter?.present(newVc, animated: true, completion: nil)
})
这可行,但当用户看到原始演示者并尝试与其交互(打开其他模式......)时切换 VC 时会出现烦人的延迟。
我尝试设置 animated: false
但这似乎不起作用:/
我真的不能为此切换到 UINavigationController
模型,因为我自己展示的模式是页面 View Controller 并且具有依赖 View 的整个层次结构;用户永远不会“返回”;所以我真的很想尽快展示新模式...
更新 我的问题不是关于如何控制或选择动画。我的问题是关于模态之间没有延迟。
最佳答案
标签栏 Controller 是一种内置的 View Controller 架构,它可以在没有过渡的情况下切换 View 。所以只要把你的 View Controller 变成一个标签栏 Controller ——没有可见的标签栏!要更改为另一个 View Controller ,只需更改选项卡(在代码中)。变化是即时的。
这个截屏视频清楚地表明这是按描述工作的。我们展示了一个 View Controller (黄色)。然后我们立即在两个 View Controller (绿色和黄色)之间来回切换作为呈现的 View Controller 。最后,我们忽略正在显示的任何一个(绿色或黄色)。我用简单的按钮来完成这一切,但这只是为了演示;显然你可以随心所欲地这样做。重要的是架构。
关于ios - 从一种模态 VC 到另一种模态 VC 的快速过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59185999/