本日は
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!")
}
}
Trending
次へボタンで遷移するはずなんですが、遷移しません。。
解決策
原因はParentViewでした。
親ViewにもNavigationStackを追加しましょう
import SwiftUI
struct ParentView: View {
var body: some View {
NavigationStack{
FirstView()
}
}
}
画面遷移するようになりました!
まとめ
結構な時間悩んでしまったので、皆さんの助けにならばと思います。
面倒だから親Viewに書かなくても遷移できるようにしてほしいな〜〜