2

这似乎是一个简单的问题,但我正在寻找一种方法来ActionSheet禁用 SwiftUI 中的一个(或多个,我想是)按钮。例如,如果基于应用程序的状态某些内容是非法的,我不想让用户点击按钮——事实上,我可能会更改文本来解释它被禁用的原因。

Xcode 自动完成并没有真正为我打开任何东西,文档(这里这里)也没有给我任何东西。我最好/唯一的选择是根本不把按钮放在按钮列表中ActionSheet吗?(有点让用户推断它为什么不存在......)

非常感谢您的任何建议!

我的简单代码:

  private func getActionSheet() -> ActionSheet {

    let buttons: [ActionSheet.Button] = [
      .default(Text("This is fine...")) { foo() },
      .default(Text("This is forbidden - disable me!")) { foo() },
      .cancel()
    ]

    return ActionSheet(title: Text("Do it!"), buttons: buttons)
  }
4

1 回答 1

0

对于非破坏性操作,您可以简单地显示一个菜单。他们支持.disabled(true)修改器。

 var body: some View {
    Menu("Do it!") {
        Button("This button works fine", action: { })
        
        Button("This one is disabled", action: { })
            .disabled(true)
    }
}
于 2021-05-30T14:30:20.200 回答