我无法在SwiftUI中将NavigationItemTitle覆盖到TabView中

我无法在SwiftUI中将NavigationItemTitle覆盖到TabView中,swiftui,navigationview,tabview,tabitem,navigationitem,Swiftui,Navigationview,Tabview,Tabitem,Navigationitem,我是SwiftUI的新手。我有一个ContentView,因为我添加了NavigationView,并从该NavigationView重定向到另一个具有TabView的视图 //ContentView.swift struct ContentView: View { @State private var isValidLogin : Bool = false var body: some View { NavigationView{ VStack

我是SwiftUI的新手。我有一个ContentView,因为我添加了NavigationView,并从该NavigationView重定向到另一个具有TabView的视图

//ContentView.swift

struct ContentView: View {

  @State private var isValidLogin : Bool = false    

  var body: some View {
    NavigationView{
         VStack
         {
           NavigationLink(destination: HomePage(), isActive:$isValidLogin) {
                Text("LOGIN")
                    .font(.headline)
                    .foregroundColor(.white)
                    .padding()
                    .onTapGesture {
                         self.isValidLogin = true
                    }
          }
        }.padding()
      }
   }
} 
这里是HomePage.swift的代码

import SwiftUI

struct HomePage: View {

private enum Tab: Hashable {
    case home
    case map
}
@State private var selectedTabbar : Tab = .home

var body: some View {
    TabView(selection: $selectedTabbar)
    {
        HomeView()
            .tag(0)
            .tabItem{
                Text("Home")
                Image(systemName: "house.fill")
            }
        
        MapView()
            .tag(1)
            .tabItem {
                Text("Map")
                Image(systemName: "map")
            }
    }.navigationBarTitle("Settings")
 }
}

struct HomePage_Previews: PreviewProvider {
    static var previews: some View {
        HomePage()
    }
}
这里是MapView.swift的代码

import SwiftUI

struct MapView: View {

var body: some View {
    Text("You are in Map Page")
        .navigationBarTitle(Text("Map"), displayMode: .inline)
 }
} 
struct MapView_Previews: PreviewProvider {
    static var previews: some View {
        MapView()
    }
}
我的错误是:当我将全局标题设置为选项卡视图属性时,navigationBarTitle(“设置”)总是反映。但我希望这样,如果我将NavigationTitle设置为子视图,那么它将显示在该子视图中。我需要这样,当我们点击地图项目时,时间导航标题应该地图。我无法找到错误,为什么它不工作,当我们应用导航标题到孩子

任何帮助都应该感谢。提前谢谢。

我找到了解决办法

在这里,我更改了我的
主页

struct HomePage: View {
    @State private var selectedTabbar = 0
    
    var body: some View {
        TabView(selection: $selectedTabbar)
        {
            HomeView()
                .tag(0)
                .tabItem{
                    Text("Home")
                    Image(systemName: "house.fill")
                }
            MapView()
                .tag(1)
                .tabItem {
                    Text("Map")
                    Image(systemName: "map")
                }  Image(systemName: "gear")
                }
        }.navigationBarTitle(Text(navigationBarTitle))
        .navigationBarBackButtonHidden(true)
        .accentColor(.red)
    }
}
我还为
主页
添加了一个扩展。它正在设置子视图的导航标题:

private extension HomePage {
    var navigationBarTitle: String {
        selectedTabbar ==  0 ? "Home" : "Map"
    }
}

使用此扩展,我们可以将动态导航标题设置为
选项卡视图

,这是因为在您的示例中,只有
选项卡视图
被视为
导航视图
的直接子项,并且仅应用设置为
选项卡视图
的导航标题。这篇文章可能会对你有所帮助:谢谢@pawello2222对你的帮助。我从这个链接中找到了一个解决方案。它得到了解决方案。谢谢。