【发布时间】:2020-11-05 11:21:33
【问题描述】:
我创建了一个简单的 SwiftUI 应用程序,它在列表中显示来自网络的图像。所有图像都在后台加载。此时,一切都按预期工作。但是,如果在加载过程中,某个 State 变量确实触发了,我的所有单元格都会重新初始化。
让我们看看代码:
struct ImageView: View {
@ObservedObject var imageLoader = ImageLoader()
var body: some View {
VStack {
if self.imageLoader.isLoaded {
DisplayImage(self.imageLoader.image)
} else {
Text("Loading...")
}
}
.onAppear {
self.imageLoader.loadImage()
}
}
}
struct TableView: View {
@State var someTrigger: Bool = false;
var body: some View {
List {
ForEach( someCollection, id: \.self) {
ImageView()
}
}
}
}
因此,如果在加载图像时触发了“someTrigger”,则所有单元格将重新初始化,imageLoader 将重新初始化,.onAppear 将不会被调用,图像将不会加载。
这是预期的行为吗?在那种情况下,我就不能以这种方式用一些后台任务来初始化我的模型?
提前致谢。
【问题讨论】: