【发布时间】:2022-11-20 05:55:22
【问题描述】:
我正在尝试构建一个可重用组件,其中包含一个 SwiftUI Picker,它可以在我的应用程序的多个位置使用不同类型。我创建了一个符合 Hashable 的 Pickable 协议,但是当我尝试使用它时,Picker 和 ForEach 抱怨 Type 'any Pickable' cannot conform to 'Hashable'
import SwiftUI
struct PickerRow: View {
let title: String
let options: [any Pickable]
@State var selection: any Pickable
var body: some View {
HStack {
Spacer()
Text(title)
.font(.subHeading)
Picker(title, selection: $selection, content: {
ForEach(options, id: \.self) {
Text($0.name)
}
}).pickerStyle(.menu)
}
}
}
protocol Pickable: Hashable {
var name: String { get }
}
有没有办法在不指定具体类型的情况下让这样的东西工作?
【问题讨论】:
-
SwiftUI 包装器/视图需要具体类型
标签: ios swift xcode swiftui swift-protocols