本日は

SwftUIで画面遷移できない

という問題の解決策を備忘録として記載していこうと思います。

事象

NavigtionStack(Navigationリンク)を使いまして、ボタン押下時に画面遷移しようとしています。

使用するViewは以下の通り。

  • ParentView
  • FirstView
  • SecondView

ここから実際のソース

まずはParentView からFirstViewを呼び出します

import SwiftUI

struct ParentView: View {
    var body: some View {
        FirstView()
    }
}

NavigationStackで全体の要素を囲って、

navigationDestinationに遷移先のSecondViewを指定し、

ボタン押下したタイミングでフラグを変えて画面遷移させます。

import SwiftUI

struct FirstView: View {
    @State var isActive = false
    
    var body: some View {
        NavigationStack{
            Button("次へ"){
                isActive=true
            }
        }
        .navigationDestination(isPresented: $isActive) {
            SecondView()
        }
    }
}
import SwiftUI

struct SecondView: View {
    var body: some View {
        Text("Hello, World!")
    }
}

次へボタンで遷移するはずなんですが、遷移しません。。

解決策

原因はParentViewでした。

親ViewにもNavigationStackを追加しましょう

import SwiftUI

struct ParentView: View {
    var body: some View {
        NavigationStack{
            FirstView()
        }
    }
}

画面遷移するようになりました

まとめ

結構な時間悩んでしまったので、皆さんの助けにならばと思います。

面倒だから親Viewに書かなくても遷移できるようにしてほしいな〜〜

投稿者 nikudango

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です