どうも、ちょげ(@chogetarou)です。
NavigationLinkの画面遷移をButtonで行う方法を紹介します。
方法

NavigationLinkをButtonで操作するには、NavigationLinkの引数「tag」と引数「selection」
を使います。
まず、画面遷移を操作するためのInt?型の変数を用意します。
@State var page : Int? = 0
次に、NavigationLinkを好きなところに配置します。
そして、NavigationLinkの引数「tag」に値、引数「selection」に用意した変数のBindingを渡します。
NavigationLink(destination : DetailView(),
tag: value, selection: $page) { EmptyView() }
最後に、Buttonを任意の位置に配置し、Buttonの処理で用意した変数をNavigationLinkの引数「tag」の値にします。
Button(action : {
page = value //用意した変数をNavigationLinkのtagの値に
}){
Text("Push")
}
これでNavigationLinkをButtonで操作することができます。
使用例
以下は、使用例です。
struct ContentView: View {
@State var page : Int? = 0
var body: some View {
NavigationView {
VStack {
NavigationLink(destination : DetailView(), tag: 1, selection: $page) {
EmptyView()
}
Button(action : {
self.page = 1
}){
Text("Push")
}
}
}
}
}
struct DetailView : View {
var body: some View {
Text("DetailPage")
}
}
コメント