我有一个UIViewControllerRepresentable implementation,并且我注意到makeUIViewController
仅被调用一次,而init
被多次调用。
类似地,视图控制器的init
被多次调用,但是它包装的滚动视图仅被创建一次,viewDidLoad
仅被调用一次。
SwiftUI是否保存对控件的引用,然后将它们重新插入到新的视图控制器实例中?在生命周期的某个地方有描述吗?
答案 0 :(得分:1)
如果新视图与旧视图不同(根据您对makeUIViewController
的实现),它可能仅调用Equatable
。
我认为SwiftUI经常(在状态更改时)重新创建基于struct
的视图层次结构,以检查是否有任何更改。每次发生这种情况时,都会调用您的init
方法。但是,如果没有任何变化,SwiftUI将不会请求ViewController的新实例。