【发布时间】:2021-03-27 10:15:18
【问题描述】:
这是我的对象列表:
let gameTypes = [
GameType(id: "generalKnowledge", text: "❓ General Knowledge"),
GameType(id: "geography", text: "???? Geography"),
GameType(id: "music", text: "???? Music"),
GameType(id: "sport", text: "⚽️ Sport"),
GameType(id: "technology", text: "???? Technology"),
GameType(id: "movies", text: "???? Movies & TV"),
]
在我看来,我的Picker:
@State var gameType: GameType = gameTypes[0]
var body: some View {
NavigationView {
VStack {
// Create game
HStack {
Picker("\(gameType.text)", selection: $gameType) {
ForEach(gameTypes, id: \.id){ type in
Text("\(type.text)").tag("\(type.id)")
}
}
.pickerStyle(MenuPickerStyle())
点击时,我的Picker 成功显示列表/菜单中的所有gameTypes 项目。但是,当我点击该列表中的某个项目时,gameType 不会更新。
知道为什么吗?
编辑:
游戏类型
class GameType: Hashable, Equatable {
let id: String
let text: String
init(id: String, text: String) {
self.id = id
self.text = text
}
// Conform to Hashable
func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
// Conform to Equatable (players will not be the same)
static func == (lhs: GameType, rhs: GameType) -> Bool {
return false
}
}
【问题讨论】:
-
什么是游戏类型?你能显示它的代码吗?
-
抱歉,添加到编辑@TusharSharma