【发布时间】:2020-05-11 22:05:34
【问题描述】:
每次我从ContentView 推送到新视图时,我在解除分配SecondVM 时遇到问题,ContentVM 完成了他的工作。
说明
推送到Second视图后,ObservableObject在ContentVM中的任务完成后被释放。
我的示例代码如下ContentView 和`ContentVM:
final class ContentVM: ObservableObject {
@Published var title = "Start"
init() {
DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
self.title = "Changed"
}
}
}
struct ContentView: View {
@ObservedObject var vm = ContentVM()
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: Second()) {
Text("Go To second")
}
Spacer()
.frame(height: 40)
Text(vm.title)
}
}
}
}
和Second 和SecondVM
final class SecondVM: ObservableObject {
@Published var name: String = ""
func getName() {
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
self.name = "TEST"
}
}
}
struct Second: View {
@ObservedObject var vm = SecondVM()
var body: some View {
Text(vm.name)
.padding(50)
.background(vm.name.isEmpty ? Color.white : Color.black)
.foregroundColor(Color.white)
.onAppear {
self.vm.getName()
}
}
}
正如您在视频中看到的,只有当我推送到Second 查看时才会出现以下问题。黑色矩形正确显示,然后在完成来自ContentVM 的任务后,这个黑色矩形因为取消分配SecondVM 而消失。如何避免这种行为?
【问题讨论】:
标签: swiftui combine swiftui-navigationlink