繁体   English   中英

如何在 SwiftUI 中使用 UINavigationController

[英]how to use UINavigationController in SwiftUI

我正在尝试创建Coordinator器以从 Screen1 导航到 Screen2

这是 UIKit 的示例

class Coordinator: AbstractCoordinator {

    var navigationController: UINavigationController?

    func goToHomeScreen() {
        navigationController?.pushViewController(HomeViewController(coordinator: self), animated: true)
    }

    func start() -> UIViewController {
        self.navigationController = UINavigationController(rootViewController: LoginViewController(coordinator: self))

        return navigationController!
    }
}

当我们使用模块化编程时,这个 Coordinator 非常有用。 我想在 SwiftUI 中做同样的事情

我知道我们必须使用 NavigationView、NavigationLink 但我不明白我应该如何在 Coordinator 中使用

有人可以告诉我该怎么做吗?

要在 SwiftUI 中使用协调器,您需要使用两个组件:

  1. 协调员视图和
  2. 协调员 Object

协调器视图是视图层次结构的一部分,并控制其子视图的转换逻辑和整体视图上下文。 协调器视图需要协调器 object 来创建视图模型并允许不同场景之间的通信。 与UIKit中的协调器类似,我们可以从子场景的视图模型中引用协调器,并根据视图模型的业务逻辑在协调器中触发过渡事件。

❓ 为什么我们将协调员分成两部分? 在 SwiftUI 中,我们有两个不同的职责需要由协调器负责: 视图的上下文需要由视图层次结构中的视图来控制。 但是我们无法控制视图的生命周期。 这可以通过 ObservableObject 轻松实现。 我们可以很容易地通过引用传递它并使其符合 Identifiable 协议。

您可以在此处获取更多详细信息: https://quickbirdstudios.com/blog/coordinator-pattern-in-swiftui/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM