はじめに
TabViewのそれぞれのタブを選択した時の処理を実装する方法について記載します。
開発環境
本題
onChange(of:perform:)を使うことで、各タブを選択した時の処理を実装することができる。
参考:https://developer.apple.com/documentation/swiftui/view/onchange(of:perform:)
以下は、onChange(of:perform:)を使ってタブが選択されたことを出力するサンプルコード。
struct ContentView: View { @State var selection = 1 var body: some View { TabView(selection: $selection) { HomeView() .tabItem { Image(systemName: "cart") Text("ホーム") } .tag(1) NewsListView() .tabItem { Image(systemName: "bell") Text("お知らせ") } .tag(2) } .onChange(of: selection) { selection in if selection == 1 { print("ホームタブが選択された") // ここでホームタブが選択された時の処理を実装する } else { print("お知らせタブが選択された")
// ここでお知らせタブが選択された時の処理を実装する } } } }
おわりに
今回は、「選択中のタブから他のタブを選択した時の処理を実装する」方法について記載しました。そのため、「選択中のタブで、再度タブを選択すると遷移元の画面に戻る」といった挙動は実装できないため、機会があれば試してみたいと思います。