LoginSignup
10
3

More than 3 years have passed since last update.

【SwiftUI】NavigationViewの遷移のネストでbackボタンが複数生成されていくのにハマったのでメモ

Last updated at Posted at 2021-01-22

はじめに

SwiftUIを触り始めてまだ1日目
Navigationでの画面遷移を行う際に愚直にコードを書いていたが、解決記事がさっと見つからなかったのでメモ

開発環境

  • Swift(version 5.3.1)
  • Xcode(version 12.2)

解決したいこと

Navigationのbackボタンが前画面のViewに更新されるのではなく、下に追加されてしまっている…
Swift01.gif
いやいや、困るよ(汗

解決する前

  • FirstView.swift
  • SecondView.swift
  • EndView.swift

以上の3画面で構成している

FirstView.swift
struct FirstView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: SecondView()) {
                Text("Go Second View")
            }
        }
        .navigationTitle("First View")
    }
}
SecondView.swift
struct SecondView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: EndView()) {
                Text("Go End View")
            }
        }
        .navigationBarTitle("Second View", displayMode: .inline)
    }
}
EndView.swift
struct EndView: View {
    var body: some View {
        Text("Hello, World!")
    }
}

シンプルに実装したが何が原因なのか…

解決方法

なんかNavigationが2個生成されてる雰囲気だよね
FirstView.swiftNavigationView{}を記述しているからSecondView.swiftではもしかしていらない感じ??
NavigationLinkだけ残して動くのかな…

SecondView.swift
struct SecondView: View {
    var body: some View {
        //NavigationView {}削除!
        NavigationLink(destination: EndView()) {
            Text("Go End View")
        }
        .navigationBarTitle("Second View", displayMode: .inline)
    }
}

これで実行↓
Swift02.gif
うんうん、この挙動を求めていたの
無事に解決した〜!

最後に

多分、これであってるよね?
愚直に書いてるとこういうところにハマるね
まだまだ初心者だけど頑張ろう

Qiita初投稿…こんな感じの書き方でいいのかなw

10
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
3