如何更改 SwiftUI 中的 PickerStyle,如 Embed in Form,但静态且不可滚动?
Posted
技术标签:
【中文标题】如何更改 SwiftUI 中的 PickerStyle,如 Embed in Form,但静态且不可滚动?【英文标题】:How can I change the PickerStyle in SwiftUI like Embed in Form, but static and not scrollable? 【发布时间】:2019-08-13 15:05:03 【问题描述】:我希望有一个参与表单的选择器。。它应该看起来像一个导航链接。这个问题是,如果我将它编程为一个表单,那么它是可滚动的,我不希望这样。我希望它是静态的,或者有人知道如何使表单成为静态而不是可滚动的解决方案。
【问题讨论】:
你应该添加图片和/或代码 你看到 topside 是选择器,而机器人端是一个自创的“Picker”,如导航链接。顶部你可以上下滑动它,这个功能我不想要。我希望它像机器人端一样,这是固定在定位 imgur.com/12QCu3U 我在 beta 6 上遇到了同样的滚动问题。对我来说,它看起来像一个错误。您可以随时向 Apple 报告。 【参考方案1】:XCode 11 Beta 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
【讨论】:
【参考方案2】:这是对应的修饰符:
.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[$0]).tag($0)
.pickerStyle(.default)
.navigationBarTitle(Text("Select your cheese"))
它就像嵌入在表单中,但您可以使用.pickerStyle(.wheel)
使其看起来像列表中的原始选择器。
但是由于您的问题不够清楚,我认为默认实际上就是您要的。
【讨论】:
是的,但这是我不想要的!这是滚动条。我不想要这个滚动动作。 我想要一个像 Forms 中的选择器样式。我的问题是,表单有一个滚动功能,这个滚动功能想要禁用它。 请添加一些图片using this site 并将链接放在问题中。我真的不明白你。 你看到 topside 是选择器,而机器人端是一个自创的“Picker”,如导航链接。顶部你可以上下滑动它,这个功能我不想要。我希望它像机器人端一样,这是固定在定位 imgur.com/12QCu3U 为什么选择器样式修饰符被应用于部分而不是选择器?如果一个部分中有多个选择器怎么办?以上是关于如何更改 SwiftUI 中的 PickerStyle,如 Embed in Form,但静态且不可滚动?的主要内容,如果未能解决你的问题,请参考以下文章
如何根据 SwiftUI 中的 @State 更改导航视图的导航视图样式?
如何更改 SwiftUI 和 iOS 14 中的单元格背景颜色?
使用 NavigationView 和 List 时如何更改 SwiftUI 中的背景颜色?