SwiftUIでNavigationLinkの遷移先から戻った時になにか処理したい

最終更新日

SwiftUIでnavigationLinkで画面遷移した後、戻ってきたときに何か処理を行いたいときありませんか?私はありました。

NavigationLink(destination: DetailView().onDissappear(){
    print("*** detailview onDisappear")
})

ちなみになぜ必要があったかというと

SwiftUI +Firebaseで開発していたのですが、アプリからSafariでURLを起動して、アプリに戻ってくると、リストに表示されていたデータが消えるという現象に悩まされていました。

何が起きていたかよくわからないのですが、アプリがバックグラウンドになった時に、以下のエラーが出力されていました。

6.30.0 - [Firebase/Firestore][I-FST000001] WatchStream (281775318) Stream error: 'Unavailable: Network connectivity changed'

おそらくバックグラウンドになった際に、Firebaseのコネクションが変更され、リッスンしていたデータにアクセスできなくなったため、画面に表示していたリストも再描画されていたようです。

とりあえず、リスト画面に戻った時に、再取得するようにしたくて上記コードのように戻った時に処理を記述することが必要になったのですが、根本的な対処は不明のままです。

それでは

シェアする

Social media & sharing icons powered by UltimatelySocial
Follow by Email