点击 NavigationLink 标签时如何执行操作?

问题描述 投票:0回答:2
struct ContentView: View {
    @State var num = 0
    var body: some View {
        VStack {
            NavigationStack {
                NavigationLink(destination: {
                    Text("Number: \(num)")
                }, label: {
                    Text("tap here").onTapGesture {
                       num += 1
                        print("\(num)")
                    }
                })
            }
        }
    }
}

在此代码中,当我点击“点击此处”导航链接时,它不会导航到新页面。它卡在

onTapGesture
中并且仅在点击时增加值。

有什么方法可以同时使用 NavigationLink 进行导航和操作吗?

swiftui swiftui-navigationlink swiftui-navigationstack
2个回答
0
投票

您可以在

.onAppear
中执行相关操作:

NavigationStack {
    NavigationLink("tap here") {
        Text("Number: \(num)")
            .onAppear {
                num += 1
                print("\(num)")
            }
    }
}

0
投票

您可以尝试使用此方法,使用

simultaneousGesture
执行某些操作 以及 导航到目标视图。

struct ContentView: View {
    @State private var num = 0
    
    var body: some View {
        VStack {
            NavigationStack {
                NavigationLink(destination: {
                    Text("Number: \(num)")
                }, label: {
                    Text("tap here")
                })
                .simultaneousGesture(TapGesture().onEnded { // <--- here
                    num += 1
                    print("\(num)")
                })
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.