【问题标题】:How to do something(for example: print("hi")) in NavigationLink before moving to a destinationView在移动到目标视图之前如何在 NavigationLink 中执行某些操作(例如:print("hi"))
【发布时间】:2019-11-19 14:55:41
【问题描述】:

我正在尝试创建一个按钮,并希望在导航到另一个视图之前做一些事情。但是,如果我使用 Button,我无法导航到另一个视图,如果我使用 NavigationLink,我除了导航之外什么也做不了。

我在下面添加按钮和导航链接。

我正在尝试使用此按钮进行 Firebase 身份验证,完成身份验证后我想导航到另一个视图。

Button(action: {print("Hi")}) {
                Text("Create Account")
                    .font(.system(size: 20))
                    .foregroundColor(Color("GreyLabel0"))              
    }

NavigationLink(destination: WelcomeView()) {
     Text("Create Account")
                    .font(.system(size: 20))
                    .foregroundColor(Color("GreyLabel0"))
}

【问题讨论】:

    标签: swift firebase swiftui


    【解决方案1】:

    在 beta 6 中,DynamicNavigationDestinationLink 已消失,因此我正在更新答案以改用 NavigationLink。

    请注意,目前 NavigationLink 中存在一个错误,此处已解决:https://stackoverflow.com/a/57274613/7786555

    import SwiftUI
    
    struct ContentView: View {
        @State private var presentMe = false
    
        var body: some View {
            NavigationView {
                VStack {
    
                    NavigationLink(destination: DetailView(), isActive: $presentMe) { EmptyView() }
    
                    Button(action: {
                        print("hi")
                        self.presentMe = true
                    }, label: {
                        Text("Present Now!")
                    })
    
                    Spacer()
    
                }.navigationBarTitle(Text("Top View"))
            }
        }
    }
    
    struct DetailView: View {
        var body: some View {
            Text("Detailed View")
        }
    }
    

    【讨论】:

    • 谢谢。这是从列表中推送新视图的方法。我想在不使用列表或单元格的情况下做到这一点。这在没有 switui 的情况下是可以实现的,并且应该有一种方法可以使用 swiftui 来做到这一点。
    • 我假设您想使用列表,但这不是必需的。我更新了我的答案并删除了列表。您可以使用一个简单的按钮。或者在任何视图上点击操作。如果这不是您想要的,请提供示例。
    • 嘿,同一个问题有什么新的解决方案吗? DynamicNavigationDestinationLink 在新测试版中不可用
    • 更新了 beta 6 的答案。
    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 2016-10-25
    • 1970-01-01
    相关资源
    最近更新 更多