在通过NavigationLink导航到其他视图之前,我该怎么做?

时间:2019-10-26 15:16:15

标签: swiftui navigationlink

让我展示简单的源代码:

struct ContentView : View {

    @State var isPresented = false
    var body: some View {        
            NavigationView {
                HStack{
                    NavigationLink(destination: MyDetailView(message: "Detail Page #2") ) {
                        Text("Go detail Page #2 >")
                    }
                    .navigationBarTitle("Index Page #1")
                }
            }

    }
}

在导航到MyDetailView之前,我想做一些事情,例如:保存一些数据或更改一些变量...

我该怎么办?

这可能是一个简单的问题,但我真的不知道。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您可以使用以下方法处理生命周期中的方法:

   .onAppear {
        print("ContentView appeared!")
    }

并且:

   .onDisappear {
        print("ContentView disappeared!")
    }

查看本教程:https://www.hackingwithswift.com/quick-start/swiftui/how-to-respond-to-view-lifecycle-events-onappear-and-ondisappear

因此,您可以使用.onDisappear来执行所需的任何操作

答案 1 :(得分:0)

我有一个简单的方法可以解决该问题:

struct ContentView : View {

    @State var isPresented = false
    var body: some View {        
            NavigationView {
                HStack{
                    NavigationLink(destination: MyDetailView(message: "Detail Page #2") ,isActive: $isPresented) {
                        Text("Go detail Page #2 >")
                            .onTapGesture
                             {
                                 //Do somethings here
                                 print("onTapGesture")
                                 //Navigate
                                 self.isPresented = true
                             }
                    }
                    .navigationBarTitle("Index Page #1")
                }
            }

    }
}