Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swiftui 带有NavigationView/NavigationLink延迟的编程导航跳回_Swiftui_Swiftui Navigationlink_Swiftui Navigationview - Fatal编程技术网

Swiftui 带有NavigationView/NavigationLink延迟的编程导航跳回

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

我创造了一个可以重现我的问题的地方;我所做的是从初始视图=>View1=>View2进行导航

从初始视图到视图1的导航是通过点击按钮实现的,这里没有什么特别的

我的视图1如下所示:

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