SwiftUI NavigationView + TabView无法显示导航栏项目

3
我在一个TabView中有四个视图,每个视图都包含带有标题的NavigationView。然而,当视图首次显示时,导航视图不会按设计显示。
即使我有导航栏项目,视图仍将始终是空白子视图。只有当我点击到另一页,然后返回到导航视图时,视图才会正常显示。可能出了什么问题?
以下是预览页面的截图。提前致谢。
struct MainContentView: View {
    @State private var navSelection = 0
    
    var body: some View {
        
        VStack(alignment: .center){
          
            TabView(selection:$navSelection){
                NavigationView{
                    HomeView()
                        .navigationBarItems(leading: Text("Title").font(.system(size:24,weight: .heavy)), trailing: Image(systemName: "bell.fill"))
                        .navigationViewStyle(StackNavigationViewStyle())
                       
                }.tag(0)
                
                NavigationView{
                    ExploreView()
                       
                }.tag(1)
        
                Text("Post").tag(2)
                Text("Market").tag(3)
                Text("Account").tag(4)
            }.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
                .disabled(true)
            
            MainTabBarView(navSelection: self.$navSelection)
            }
    }
}

这里是图片描述

预览样例


有趣的 bug... 看起来 PageTabViewStyle 标签视图也使用内部导航堆栈,这会与您的子导航视图堆栈发生冲突。 - Asperi
哇...这是否意味着我在此阶段不必指定导航视图,而是直接在主页视图中使用导航链接? - cc nn
@ccnn 或者直接放弃选项卡视图,自己制作一个定制化更高的视图可能会更好。 - aheze
不得不放弃TabView了,谢谢! - cc nn
1个回答

2
只是一个小错误,将样式应用于导航视图如下所示:
NavigationView{ 
}
.navigationViewStyle(.stack)
         

一些问题出现了,某种程度上来说是因为SwiftUI在层次结构中找到了一个详细视图并将其推送,因为通常在NavigationView中定义了两个视图,但您只定义了一个。我认为.tabViewStyle是导致这种情况的原因。
此外,我们使用.navigationTitle("Home")来设置导航栏标题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接