在 swiftui 中 2 秒后推送视图

Posted

技术标签:

【中文标题】在 swiftui 中 2 秒后推送视图【英文标题】:push view after 2 seconds in swiftui 【发布时间】:2020-02-14 09:07:09 【问题描述】:

如何在没有任何交互的情况下在 swiftUI 中 x 秒后推送视图?

 NavigationView
            .onAppear 
                DispatchQueue.main.asyncAfter(deadline: .now()+1.0) 
                    NavigationLink(destination: pageViewUi()) 
                        EmptyView()
                    
                
            

【问题讨论】:

【参考方案1】:

你可以这样处理它:


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()
                    
            
        
    


【讨论】:

如何从下一个视图中删除导航返回? 您可以在下一个视图中设置导航隐藏修饰符 在我的回答中,您有隐藏后退按钮的代码。 :)【参考方案2】:

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

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
    

【讨论】:

以上是关于在 swiftui 中 2 秒后推送视图的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 上的 NavigationLink 两次推送视图

显示 1 秒后自动关闭模式 - swiftui

如何在 Swift 中 3 秒后从 AppDelegate 中删除FromSuperview

SwiftUI - 当用户打开推送通知时打开特定视图

SwiftUI - 如何将视图关闭到根目录,然后立即推送第二个视图?

如何构造值以使所有视图都可以在 Swift/SwiftUI 中访问其值?