【问题标题】:Why do I exit my TabView when navigating to a child view?为什么在导航到子视图时退出我的 TabView?
【发布时间】:2021-03-10 17:33:36
【问题描述】:

问题。为什么我在导航到 TabView 的子视图时退出我的 TabView?我希望我很清楚,但是下面的代码可以复制和粘贴,请注意当我导航到 UnrelatedView 时,我退出了我的 tabView...

附加上下文:在这种情况下,根视图 ContentView 嵌入在 App.swift 文件中的 NavigationView 内

  import SwiftUI

struct ContentView: View {
    var body: some View {
        TabView {
            ViewA()
                .tabItem {
                    Text("A")
                }
            
            ViewB()
                .tabItem {
                    Text("B")
                }
            
            ViewC()
                .tabItem {
                    Text("C")
                }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
 
struct ViewA: View {
    var body: some View {
        NavigationLink(destination: UnrelatedView()) {
        Text("ViewA")
        }
    }
}


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

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

struct UnrelatedView: View {
    
    var body: some View {
        NavigationView {
        Text("Unrelated View")
        }
    }
}

【问题讨论】:

    标签: swiftui tabview


    【解决方案1】:

    您需要将导航包裹在NavigationViews 中。

    struct ViewA: View {
        var body: some View {
            NavigationView {
                NavigationLink(destination: UnrelatedView()) {
                    Text("ViewA")
                }
            }
        }
    }
    

    【讨论】:

    • 问题在于,如果我已经在 NavigationView 中并导航到新的 navigationView,我将被加倍堆叠。我想我将不得不取消最初的 NavView 并将它们保留在指定视图上
    • 是的,您可以从目标“UnrelatedView”中删除 NavigationView。它将被添加到显示它的视图的导航堆栈中。
    猜你喜欢
    • 1970-01-01
    • 2020-08-15
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 2021-03-28
    相关资源
    最近更新 更多