swift - 如何做某事(例如 : print ("hi")) in NavigationLink before moving to a destinationView

标签 swift firebase swiftui

我正在尝试创建一个按钮,想在导航到另一个 View 之前做一些事情。但是如果我使用 Button,我就不能导航到另一个 View ,如果我使用 NavigationLink,我除了导航之外什么也做不了。

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

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

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"))
}

最佳答案

在 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")
    }
}

关于swift - 如何做某事(例如 : print ("hi")) in NavigationLink before moving to a destinationView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56962928/

相关文章:

ios - 如何修复不一致的颜色到清晰的径向渐变层

Swift 将整数转换为 2 个字符的十六进制字符串

firebase - 如果 url 包含 '#',如何使用 google firebase 动态链接缩短 url

firebase - 如何显示 map 中的数据列表? - flutter 的Firestore

FormView 中的 SwiftUI 故障

ios - Swiftui Firebase AddSnapShotListener

ios - VIPER 的可重用 View /模块

objective-c - Swift 的 "Bridging-Header.h"问题

android - 使用 Firebase 和 android 处理大于 Long 的整数

swiftui - 为什么NavigationStack的navigationDestination作为VStack的一部分没有被调用?