TabViewで最初に開くタブをコントロールする
TabViewで最初に開くページをコントロールする
TabViewをModalで開いているのですが、経路によって最初のタブを分けたいことがありました。 少し調べても方法が見つからなかったので、まとめておきます。
結論
- TabViewを含むページをinitするタイミングで、Tab番号を渡す。
- OnAppearのタイミングでTabを変更する。
import SwiftUI struct test: View { @State private var selection = 0 let initPage: Int init(selected: Int) { self.initPage = selected } var body: some View { TabView(selection: $selection) { Text("First View").tag(0) Text("Second View").tag(1) } .tabViewStyle(.page) .onAppear(){ self.selection = self.initPage } } } #Preview { test(selected: 0) // 親Viewでこんな感じで値を渡す }
調べてわかったこと
InitでTab番号を指定しても、Viewが生成されていないので無視されます。 こんなコード
@State private var selection = 0 init(selected: Int) { self. selection = selected }
他にも親の要素をBindingしておく方法もあるっぽいですが。 私がBindingがまだよくわかっていません。