[SwiftUI]NavigationLinkをButtonで操作するには?

SwiftUI

どうも、ちょげ(@chogetarou)です。

NavigationLinkの画面遷移をButtonで行う方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

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

コメント

タイトルとURLをコピーしました