【问题标题】:how to use UINavigationController in SwiftUI如何在 SwiftUI 中使用 UINavigationController
【发布时间】:2021-12-24 18:00:35
【问题描述】:

我正在尝试创建 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 中使用

谁能告诉我该怎么做?

【问题讨论】:

    标签: ios swiftui


    【解决方案1】:

    要在 SwiftUI 中使用 Coordinator,您需要使用两个组件:

    1. 协调员查看和
    2. 协调器对象

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

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

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

    【讨论】:

    猜你喜欢
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多