swa*_*ner 5 swiftui swiftui-navigationlink swiftui-navigationview
我创建了一个可以重现我的问题的简单展示;我正在做的是从初始视图 => 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
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在 中包含延迟onAppear
,它会按预期工作;延迟后,我被导航到View2
并留在那里。
但是,如果我删除延迟(或将其设置为例如 300 毫秒),我会导航到View2
,但会立即导航回来。我不明白这里发生了什么;为什么我$viewModel.foo
设置为 false 后我设置为true
?
归档时间: |
|
查看次数: |
103 次 |
最近记录: |