SwiftUI如何管理状态?

时间:2020-07-20 13:57:38

标签: swiftui

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

类似地,视图控制器的init被多次调用,但是它包装的滚动视图仅被创建一次,viewDidLoad仅被调用一次。

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

1 个答案:

答案 0 :(得分:1)

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

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