ios 为什么不是从主结构体调用ContentView时NavigationTitles没有出现

46scxncf  于 2023-08-08  发布在  iOS
关注(0)|答案(1)|浏览(103)

这是我的应用程序的主结构,在一个名为GitaApp.swift的文件中:

@main
struct GitaApp: App {
    @AppStorage("test_launchedBefore") var launched = false
    var body: some Scene {
        WindowGroup {
            if launched == true {
                ContentView()
            } else {
                welcome()
            }
        }
    }
}

字符串
launched为真时,它工作得很好,弹出的内容:


的数据
launched为false时,它会在名为Welcome.swift的档案中执行结构。它经过2个结构,从welcome结构开始,到结束结构结束:

struct welcome: View {
    var body: some View {
        NavigationStack {
            NavigationLink("Let's set up!", destination: ending())
        }
    }
}

struct ending: View {
    var body: some View {
        NavigationLink("Let's go!", destination:
            ContentView() // <-- goes to ContentView
                .navigationBarBackButtonHidden(true)
                .navigationBarTitleDisplayMode(.large)
        )
    }
}


这是这样的:



标题消失,ContentView文件中的每个选项卡和视图都会发生这种情况。为什么会发生这种情况?我在任何地方都找不到关于它的任何东西。
我的ContentView如下所示:

struct ContentView: View {
    var body: some View {
        TabView {
            HomeView()
                .tabItem {
                    Image(systemName: "house")
                    Text("Home")
                }
            
            ... // <-- different tabs
        }
    }
}


例如,这是我的HomeView,第一个选项卡:

struct HomeView: View {
    var body: some View {
        NavigationStack {

            Text("Hi").font(.largeTitle)

        .navigationTitle("Home")
        }
    }
}

wkyowqbh

wkyowqbh1#

多亏了jnpdx,我发现了问题是TabView应该是根目录,而根目录上的NavigationStack不起作用。除了.fullScreenCover,我找不到一个简单的方法来移动到另一个,所以我这样做了:

struct ending: View {
    @State private var isPresented = false
    var body: some View {
        Button {
            isPresented.toggle()
        } label: {
            Text("Let's go!")
        }
        .fullScreenCover(isPresented: $isPresented) {
            ContentView()
        }     // <--- fullScreenCover to present ContentView
    }
}

字符串

相关问题