_mitty
@_mitty

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

SwiftUIのTabViewでタブが複製されてしまう原因について

解決したいこと

SwiftUIで、TabViewを使用した画面遷移を実装しようとしたところ、
下記画像のように同じタブが作られてしまうのですが、何故でしょうか?

原因と、対処方法についてお分かりの方がいましたら、教えてください。
よろしくお願いします。

シミュレーターの表示画面

"タブ1" が2つできてしまう。
Simulator Screen Shot - iPod touch (7th generation) - 2021-05-18 at 15.56.18.png

該当するソースコード

//Xcode version 12.4
//Swift version 5.3.2

import SwiftUI

struct ContentView: View {
    var body: some View {
        TabView() {
            TabView_one().tabItem {
                Image(systemName: "calendar")
                Text("タブ1")
            }
            TabView_two().tabItem {
                Image(systemName: "gearshape")
                Text("タブ2")
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
1

1Answer

下記のソースコードやパスは先ほど、私がやったことですが、
参考しながらもう一度やって見てください。

多分、TabView_oneのソースコードに問題があるかもしれませんので、
確認して見た方がいいと思います。

ContentView.swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        Home()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
Home.swift

import SwiftUI

struct Home: View {
    var body: some View {
        TabView {
            Tag1().tabItem {
                    Image(systemName: "calendar")
                    Text("tag1")
                }
            Tag2().tabItem {
                    Image(systemName: "gearshape")
                    Text("tag2")
                }
        }
    }
}
Tag1.swift

import SwiftUI

struct Tag1: View {
    var body: some View {
        Text("tag1")
    }
}
Tag2.swift

import SwiftUI

struct Tag2: View {
    var body: some View {
        Text("tag2")
    }
}

path

スクリーンショット 2021-05-21 14.24.02.png

スクイーンショット

スクリーンショット 2021-05-21 14.23.49.png

1Like

Comments

  1. @_mitty

    Questioner

    clean build folderで無事解決しました。(まずチェックすべきでしたね。すみません。何が原因であったのか分からないままではありますが)
    ご回答、ありがとうございます。

Your answer might help someone💌