我正在尝试禁用 swiftUI 中的 Picker 选项。根据下面的文档,代码应该可以工作:
struct ContentView: View {
let options = ["All", "Men", "Women", ]
@State private var selectedOption = "All"
var body: some View {
Picker("Options", selection: $selectedOption) {
ForEach(options, id: \.self) { option in
Text(option)
.disabled(option == "All")
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,它在我出错的地方不起作用。有人可以帮忙吗!?
小智 4
您无法禁用 SwiftUI Picker 中的选项。禁用修饰符可以应用于整个选择器。因此一种方法是,您可以在添加到选择器时过滤选项。
let options = ["All", "Men", "Women"]
@State private var selectedOption = "Men"
var body: some View {
Picker("Options", selection: $selectedOption) {
ForEach(options, id: \.self) { option in
if option != "All" {
Text(option)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是,您可以使用SwiftUI Menu制作自定义选取器并获得预期结果。在这里您可以禁用任何您想要的选项,
let options = ["All", "Men", "Women"]
@State private var selectedOption = "Men"
var body: some View {
Menu {
ForEach(options, id: \.self) { option in
if option == "All" {
Button(action: {}) {
Text(option)
.foregroundColor(.gray)
}
.disabled(true)
} else {
Button(action: {
selectedOption = option
}) {
Text(option)
}
}
}
} label: {
Text(selectedOption)
.foregroundColor(.primary)
.padding(.horizontal)
}
.padding(.horizontal)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1748 次 |
| 最近记录: |