在SwiftUI中延迟2秒后推送视图

3
在SwiftUI中如何在x秒后推送视图而不需要任何交互?
 NavigationView{
            .onAppear {
                DispatchQueue.main.asyncAfter(deadline: .now()+1.0) {
                    NavigationLink(destination: pageViewUi()) {
                        EmptyView()
                    }
                }
            }
}
2个回答

8
你可以这样处理它:

struct ContentView: View {
    @State var show = false
    var body: some View {
        NavigationView{
            NavigationLink(destination: Text("OK"), isActive: $show, label: {
                EmptyView()
            })
                .onAppear {
                    DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
                        self.show.toggle()
                    }
            }
        }
    }
}


如何从下一个视图中删除导航返回? - Pathak Ayush
2
你可以在下一个视图上设置导航栏隐藏修饰符。 - Mac3n
在我的答案中,您有隐藏返回按钮的代码。 :) - 93sauu

0
你需要使用状态变量来管理它:
import SwiftUI

struct Home : View {
    @State var isActive = false

    var body: some View {
        NavigationView {
            VStack {
                Text("Home")
                NavigationLink(destination: Details(), isActive: self.$isActive) {
                    EmptyView()
                }
            }
        }.onAppear {
            DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
                self.isActive.toggle()
            }
        }
    }
}

struct Details : View {
    var body: some View {
        VStack {
            Text("sample code")
        }.navigationBarBackButtonHidden(true) // To hide back button
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接