我试图在遍历目录时创建一些反馈。我发现文本字段直到最后才更新。
这是一个有同样问题的测试脚本:
struct ContentView: View {
@State var thing: Int = 0
var body: some View {
return VStack {
VStack {
Text(String(thing))
Button("Test") {
for i in 1 ... 1000000 {
thing = i;
}
}
}
}
}
}
同样,在循环完成之前,文本字段不会更新。我认为所有更新都会在代码完成后发生。
如何持续更新视图?
struct ContentView: View {
@State var thing: Int = 0
var body: some View {
VStack {
VStack {
Text(thing, format: .number)
Button("Test") {
thing = 1
}
.task(id: thing) {
if thing = 0 { return }
if thing > 10000 { return }
try? await Task.sleep(for: .seconds(1))
thing += 1
}
}
}
}
}