SwiftUI-ActionSheet中的动态按钮?

时间:2020-07-20 10:29:15

标签: ios swift swiftui

我正在尝试获取数组sizes(可以具有不同的值)。我试图遍历数组并在.default中创建一个ActionSheet按钮。

这是代码:

var sizes = ["S", "M", "L"]

var body: some View {
  Button( [...] )
  .actionSheet(isPresented: $showingActionSheet, content: {
    ActionSheet(title: Text("Select size..."), buttons: [
      ForEach(0 ..< sizes.count) { index in
        buttons.default(Text(sizes[index]) { print(sizes[index]) })
      }
    ])
  })
}

很显然,这无法正常工作,因为您无法在ForEach数组内执行buttons。我将如何动态产生这些按钮及其功能?谢谢!

1 个答案:

答案 0 :(得分:1)

ActionSheet接受一个数组作为其参数,因此您可以将map数组sizes变成ActionSheet.Button的数组:

ActionSheet(title: Text("Select size..."), buttons:
    sizes.map { size in 
        .default(Text(size)) { print(size) } 
    }
)