9

私は TabView と、すべてのタブ項目に対して個別の NavigationView スタックを持っています。うまく動作しますが、NavigationLink を開くと、TabView バーがまだ表示されます。NavigationLink をクリックするたびに消えてほしいです。

struct MainView: View {
    @State private var tabSelection = 0

    var body: some View {
        TabView(selection: $tabSelection) {
            FirstView()
                .tabItem {
                    Text("1")
                }
                .tag(0)
            SecondView()
                .tabItem {
                    Text("2")
                }
                .tag(1)
        }
    }
}

struct FirstView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: FirstChildView()) { // How can I open FirstViewChild with the TabView bar hidden?
                Text("Go to...")
            }
            .navigationBarTitle("FirstTitle", displayMode: .inline)
        }
    }
}

TabView を NavigationView 内に配置する解決策を見つけたので、NavigationLink をクリックすると、TabView バーが非表示になります。しかし、これは Tab 項目の NavigationBarTitles を台無しにします。

struct MainView: View {
    @State private var tabSelection = 0

    var body: some View {
        NavigationView {
            TabView(selection: $tabSelection) {
                ...
            }
        }
    }
}

struct FirstView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: FirstChildView()) {
                Text("Go to...")
            }
            .navigationBarTitle("FirstTitle", displayMode: .inline) // This will not work now
        }
    }
}

このソリューションでは、TabView アイテムごとに異なる NavigationTabBars を持つ唯一の方法は、ネストされた NavigationViews を使用することです。ネストされた NavigationViews を正しく実装する方法があるのではないでしょうか? (私が知る限り、Navigation 階層には NavigationView が 1 つしかないはずです)。

SwiftUIでNavigationLinkビュー内のTabViewバーを正しく非表示にするにはどうすればよいですか?

4

4 に答える 4