如何更改 SwiftUI 中的 PickerStyle,就像在表单中嵌入一样,但静态且不可滚动?

How can I change the PickerStyle in SwiftUI like Embed in Form, but static and not scrollable?

我想要一个参与表单的选择器{}。它应该看起来像一个导航 link。那个问题是,如果我将它编程为 form{},那么它是可滚动的,我不希望这样。我想让它保持静态,或者有人知道如何使表单静态且不可滚动的解决方案。

这是对应的修饰符:

.pickerStyle()

例如这段代码:

struct ContentView : View {
    var strengths = ["Mild", "Medium", "Mature"]

    @State var selectedStrength = 0

    var body: some View {
        NavigationView {
            Form {
                Section {
                    Picker(selection: $selectedStrength, label: Text("Strength")) {
                        ForEach(0 ..< strengths.count) {
                            Text(self.strengths[[=10=]]).tag([=10=])
                        }
                    }
                }.pickerStyle(.default)
            }.navigationBarTitle(Text("Select your cheese"))

        }
    }
}

它就像嵌入在表单中,但您可以使用 .pickerStyle(.wheel) 使其看起来像列表中的原始选择器。

不过你问的不够清楚,我想default其实就是你要的

XCode 11 测试版 6

@Daniel Ryan 我现在编写了自己的方法,效果很好。

import SwiftUI

var AnArrays : [String] =  [  "eins", "zwei", "drei", "vier", "fünf"]

struct ContentView: View {
     @State var Gepickt : String = ""
     var body : some View {
          NavigationView{
               VStack {
                    NavigationLink(destination: AuswahlPick(gewählt: $Gepickt)) {
                         HStack {
                              Text("PickerMaSelf")
                                   .foregroundColor(Color.black)
                              Spacer()
                              Text(Gepickt.count > 0 ? Gepickt : "Pick One ?")  .foregroundColor(Color.gray)
                              Image(systemName: "chevron.right")  .foregroundColor(Color.gray)
                                   .padding(.trailing)
                         }
                    }
               }
          }
     }
}

struct AuswahlPick: View {
     @Binding var gewählt : String
     @Environment(\.presentationMode) var presentationMode
     var body: some View {
          Form{
               ForEach(AnArrays, id: \.self){ x in
                    Button(action: {
                         self.gewählt = "\(x)"
                         self.presentationMode.wrappedValue.dismiss()
                    }) {
                         Text("\(x)")
                              .foregroundColor(Color.black)
                    }
               }
          }
     }
}

#if DEBUG
struct ContentView_Previews: PreviewProvider {
     static var previews: some View {
          ContentView()
     }
}
#endif