在选择器内容中显示“返回”按钮

时间:2020-09-29 14:26:13

标签: swiftui

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

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

您知道如何解决此问题吗?

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)

RPC

1 个答案:

答案 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)
 }