Ios SwiftUI-使选择器默认值成为占位符

Ios SwiftUI-使选择器默认值成为占位符,ios,swiftui,picker,Ios,Swiftui,Picker,是否可以为Swift选择器设置占位符文本?我一直在努力寻找一个有用的答案,但到目前为止我还没有成功,所以希望这将有助于解决这个问题:) 当前,在将可用列表值传递给选择器时,我也会传递一个默认值作为开始。但是,此默认值被视为与用户拾取的值相同。我试图实现的是,默认值应该是灰色的(就像标准文本字段的常规占位符),当用户打开选择器时,该值将作为默认值“消失”,强制用户从列表中选择某些内容(但不丢失范围)-因此f.ex。如果我有一个值介于1-200之间的选择器,并且我将占位符设置为100,那么当您打开它

是否可以为Swift选择器设置占位符文本?我一直在努力寻找一个有用的答案,但到目前为止我还没有成功,所以希望这将有助于解决这个问题:)


当前,在将可用列表值传递给选择器时,我也会传递一个默认值作为开始。但是,此默认值被视为与用户拾取的值相同。我试图实现的是,默认值应该是灰色的(就像标准文本字段的常规占位符),当用户打开选择器时,该值将作为默认值“消失”,强制用户从列表中选择某些内容(但不丢失范围)-因此f.ex。如果我有一个值介于1-200之间的选择器,并且我将占位符设置为100,那么当您打开它时,选择器仍会显示此值(以避免从开始滚动),但除非用户实际选择它,否则不会直接将其作为目标值。

这在当前是不可能的,您可以在应用程序中放置一个虚拟字符串,您可以使用逻辑将其指定为无选择。下面的示例代码选择“-”不是选择

struct ContentView:View{
var colors=[“-”、“红色”、“绿色”、“蓝色”、“格子花纹”]
@状态私有变量selectedColor=0
var body:一些观点{
VStack{
选择器(选择:$selectedColor,标签:文本(“请选择颜色”)){
ForEach(0..<颜色数){
文本(self.colors[$0])
}
}.pickerStyle(WheelPickerStyle())
如果颜色[selectedColor]==“--”{
文本(“未选择”)
}否则{
文本(“您选择:\(颜色[selectedColor]))
}
}
}
}

谢谢您的回答!不幸的是,这个解决方案不能完全满足我的目的,因为它在选择枚举值时很有帮助,但在我们的应用程序中,我们有很多数值选择器,范围很广,提供默认的伪值仍然会导致用户必须滚动到更高的数值,这是我们试图限制的。很遗憾,默认情况下选择器不允许这样做,我想知道是否可以扩展标准视图,添加自定义逻辑来允许占位符值,但迄今为止没有成功。如果我能成功,我会发布solution@LisekKL如果将添加占位符值添加到数据数组的中间,您的问题难道没有解决吗?不完全是因为客户端不接受将其他默认值添加到下拉列表中(特别是对于数字值,他们希望只保留可接受的值)我找到了另一个解决方案,它涉及到在视图中添加一个标志来通知值是否是占位符,如果是,我将值的颜色调整为灰色以“模拟”标准占位符。一旦用户实际选择了一个值,那么该标志将根据按钮操作重置,并且我已经在字段中添加了一个验证程序,如果该标志仍然设置,则该验证程序将失败。一旦我解决了所有剩余的问题,我将上传解决方案