我有一个带有隐藏导航栏的视图,但是当用户从选择器中选择一个值时,我需要使用后退按钮显示导航栏。
当我添加一个前导按钮时,我的代码将所有国家/地区文本显示为一项,而不是将每个文本都放在单独的可选行中。
您知道如何解决此问题吗?
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)
答案 0 :(得分:1)
将修饰符应用于动态容器,即对于ForEach,您将其转换为一个视图,因此选择器仅显示一个组合视图。
这里是可能的解决方案-仅将所需的修饰符附加到选择器的第一项(已通过Xcode 12 / iOS 14测试)
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)
}