【问题标题】:How does SwiftUI manage state?SwiftUI 如何管理状态?
【发布时间】:2020-07-20 13:57:38
【问题描述】:

我有一个 UIViewControllerRepresentable implementation,我注意到 makeUIViewController 只被调用一次,而 init 被多次调用。

同样,视图控制器的 init 被多次调用,但它所包裹的滚动视图只创建一次,viewDidLoad 只被调用一次。

SwiftUI 是否持有对控件的引用,然后将它们重新插入到新的视图控制器实例中?生命周期的某处有描述吗?

【问题讨论】:

    标签: swiftui


    【解决方案1】:

    如果新视图与旧视图不同(根据您对Equatable 的实现),它可能只调用makeUIViewController

    我认为 SwiftUI 经常(在状态更改时)重新创建基于 struct 的视图层次结构以检查是否有任何更改。每次发生这种情况时,都会调用您的 init 方法。但如果没有任何变化,SwiftUI 将不会请求 ViewController 的新实例。

    【讨论】:

    • 该实现在其初始化中创建控制器。在第一次请求之后,可能没有使用新的控制器。
    猜你喜欢
    • 1970-01-01
    • 2013-09-16
    • 2021-11-20
    • 2011-02-08
    • 2017-12-17
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多