我创建一个简单的展示 https://github.com/haemi/NavigationProblem哪里可以重现我的问题;我正在做的是从初始视图 => View1 => View2 导航。
从初始视图到 View1 的导航是通过按钮点击进行的,这里没什么特别的。
我的 View1 如下所示:
struct View1: View {
@ObservedObject private var viewModel = ViewModel()
private let includeDelay = true
var body: some View {
NavigationLink(
destination: View2(),
isActive: $viewModel.foo,
label: {
Text("View 1")
})
.onAppear(perform: {
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(includeDelay ? 500 : 0)) {
viewModel.doSomething()
}
})
}
}
class ViewModel: ObservableObject {
@Published var foo = false
func doSomething() {
foo = true
}
}
如果我将延迟包括在内onAppear
,它按预期工作;延迟后,我被导航到View2
并留在那里。
但是如果我删除延迟(或将其设置为例如 300 毫秒),我会导航到View2
,但立即导航回来。我不明白这里发生了什么;为什么是我的$viewModel.foo
我设置后设置为 falsetrue
?
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)