Swiftui 在选择器内容中显示后退按钮

Swiftui 在选择器内容中显示后退按钮,swiftui,Swiftui,我有一个隐藏导航栏的视图,但当用户从选择器中选择一个值时,我需要显示带有后退按钮的导航栏 当我添加一个前导按钮时,我的代码将所有国家/地区文本显示为一个项目,而不是将每个文本放在单独的可选行中 你知道如何解决这个问题吗 VStack{ Form { Picker(selection: $selectedCountry, label: HStack { Text("Country") }) {

我有一个隐藏导航栏的视图,但当用户从选择器中选择一个值时,我需要显示带有后退按钮的导航栏

当我添加一个前导按钮时,我的代码将所有国家/地区文本显示为一个项目,而不是将每个文本放在单独的可选行中

你知道如何解决这个问题吗

VStack{
    Form {
        Picker(selection: $selectedCountry, label: HStack {
            Text("Country")
        }) {
            ForEach(0 ..< countries.count) {
                Text(self.countries[$0])
            }
            .navigationBarItems(leading: BackButton())
            .navigationBarBackButtonHidden(true)
            .navigationBarHidden(false)
        }
        .navigationBarHidden(true)
        .navigationBarBackButtonHidden(false)
    }
}.navigationBarTitle("")
.navigationBarHidden(true)
VStack{
形式{
选择器(选择:$selectedCountry,标签:hs标记){
案文(“国家”)
}) {
ForEach(0..<国家/地区计数){
文本(自主权国家[$0])
}
.navigationBarItems(前导:BackButton())
.navigationBarBackButtonHidden(真)
.navigationBarHidden(false)
}
.navigationBarHidden(真)
.navigationBarBackButtonHidden(错误)
}
}.navigationBarTitle(“”)
.navigationBarHidden(真)

将修改器应用于动态容器,即ForEach,将其转换为一个视图,因此picker只显示一个组合视图

这里有一个可能的解决方案-只将所需的修改器附加到选择器的第一项(使用Xcode 12/iOS 14测试)

表单{
选择器(选择:$selectedCountry,标签:hs标记){
案文(“国家”)
}) {
ForEach(0..<国家/地区计数){
如果0==$0{
文本(自主权国家[$0])
.navigationBarItems(前导:BackButton())
.navigationBarBackButtonHidden(真)
.navigationBarHidden(false)
}否则{
文本(自主权国家[$0])
}
}
}
.navigationBarHidden(真)
.navigationBarBackButtonHidden(错误)
}
 Form {
      Picker(selection: $selectedCountry, label: HStack {
            Text("Country")
      }) {
            ForEach(0 ..< countries.count) {
                if 0 == $0 {
                    Text(self.countries[$0])
                        .navigationBarItems(leading: BackButton())
                        .navigationBarBackButtonHidden(true)
                        .navigationBarHidden(false)
                } else {
                    Text(self.countries[$0])
                }
            }
      }
      .navigationBarHidden(true)
      .navigationBarBackButtonHidden(false)
 }