我正在try 禁用wiftUI中的选取器选项. 根据下面的文档,代码应该可以工作:


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()
    }
}

不幸的是,它在我出错的地方不起作用.谁能帮帮忙!?

推荐答案

您不能禁用SwiftUI选取器中的选项.disabled修改器可以应用于整个拾取器.因此,一种方法是,您可以在添加到选取器时过滤选项.

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)

                }
            }
        }
    } 

另一种 Select 是,你可以使用100来制作一个定制的Picker,并得到你想要的结果.在这里您可以禁用任何您想要选项,

       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)
        }

Swift相关问答推荐

如何消除SwiftUI中SF符号的填充

如何防止自动状态恢复,如果应用程序被启动打开特定的文档?

有没有一种方法可以迭代可编码的代码(例如,JSON解析中的每一项)?

SwiftUI同心圆,通过逐渐出现来显示进度

了解SWIFT中的命名VS位置函数调用

是否可以将具有关联值的枚举强制转换为其类型与关联值匹配的变量?

相互取消任务

SwiftUI 无法在实时活动中显示 SpriteView

如何在 switch case 模式语句中使用 Swift 文字正则表达式?

如何制作具有 2 个视图的 3D 旋转动画?

try 制作一个 Swift 扩展来替换字符串中的多次出现

获取具有关联类型的协议的self

Swift:创建用于调用 C 函数的指针数组

Swift 中的Combine和didSet有什么区别?

将阻塞函数集成到 Swift 异步中

找不到接受提供的参数的/的重载

Swift:在子类中覆盖 == 导致仅在超类中调用 ==

将强制向下转换视为可选将永远不会产生零

使用 JSONEncoder 对类型为 Codable 的变量进行编码

swift - 我可以从我的自定义初始化方法中调用 struct 默认成员初始化吗?