Как я мог сделать что-то, прежде чем перейти к другому представлению по NavigationLink? - PullRequest
1 голос
/ 26 октября 2019

Позвольте мне показать простой исходный код:

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 голосов
/ 27 октября 2019

У меня есть простой способ решить эту проблему:

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

    }
}
0 голосов
/ 26 октября 2019

Вы можете обрабатывать методы из жизненного цикла, используя:

   .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 для выполнения любых необходимых действий

...