如何更改 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
我想要一个参与表单的选择器{}。它应该看起来像一个导航 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