答案 0 :(得分:1)
在UIKit中,UIPickerView
提供了在选择器视图中具有多个组件的选项。 SwiftUI的Picker
没有。但是,您可以在Picker
中使用多个HStack
。在某些情况下,透视图看起来可能与具有多个组件的UIPickerView
略有不同,但在我看来,这是完全可以接受的。
这是一个老虎机的示例,该老虎机具有4个并排的拾取器,并带有一个在点击时“旋转”该老虎机的按钮(请注意,我禁用了拾取器上的用户交互,因此只能使用按钮来旋转它们):
enum Suit: String {
case heart, club, spade, diamond
var displayImage: Image {
return Image(systemName: "suit.\(self.rawValue).fill")
}
}
struct ContentView: View {
@State private var suits: [Suit] = [.heart, .club, .spade, .diamond]
@State private var selectedSuits: [Suit] = [.heart, .heart, .heart, .heart]
var body: some View {
VStack {
HStack(spacing: 0) {
ForEach(0..<self.selectedSuits.count, id: \.self) { index in
Picker("Suits", selection: self.$selectedSuits[index]) {
ForEach(self.suits, id: \.self) { suit in
suit.displayImage
}
}
.frame(minWidth: 0, maxWidth: .infinity)
.clipped()
.disabled(true)
}
}
Button(action: self.spin) {
Text("Spin")
}
}
}
private func spin() {
self.selectedSuits = self.selectedSuits.map { _ in
self.suits.randomElement()!
}
}
}
这只是一个例子,无疑可以改进,但这是一个不错的起点。
请记住,此代码确实会在Xcode Beta 5中引发警告-
'subscript(_ :)'已过时:有关迁移路径,请参见发行说明。
我没有机会对此进行研究,但是该示例仍然有效,应该可以帮助您实现目标。