Swiftui 带有NavigationView/NavigationLink延迟的编程导航跳回
我创造了一个可以重现我的问题的地方;我所做的是从初始视图=>View1=>View2进行导航 从初始视图到视图1的导航是通过点击按钮实现的,这里没有什么特别的 我的视图1如下所示:Swiftui 带有NavigationView/NavigationLink延迟的编程导航跳回,swiftui,swiftui-navigationlink,swiftui-navigationview,Swiftui,Swiftui Navigationlink,Swiftui Navigationview,我创造了一个可以重现我的问题的地方;我所做的是从初始视图=>View1=>View2进行导航 从初始视图到视图1的导航是通过点击按钮实现的,这里没有什么特别的 我的视图1如下所示: struct View1: View { @ObservedObject private var viewModel = ViewModel() private let includeDelay = true var body: some View { Navigation
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
}
}
如果我将延迟包含在附录中,它将按预期工作;延迟之后,我被导航到View2
并停留在那里
但如果我删除延迟(或将其设置为300ms),我会被导航到View2
,但会立即被导航回来。我不明白这里发生了什么;为什么将我的$viewModel.foo设置为true
后将我的$viewModel.foo设置为false