【发布时间】:2021-06-24 02:45:07
【问题描述】:
我想在我的 Struct 类型的 State 变量中切换变量,但不知道如何构造一个自定义 Binding 到 State 的变量。 Xcode 抛出错误“Cannot assign to property: 'translations' is a 'let' constant”
带有自定义绑定的 ForEach(不起作用)
ForEach(data.translations, id: \.self) { translations in
let binding = Binding(
get: { translations.target},
set: { translations.target = $0 }
)
HStack {
Text("\(translations.language)")
Spacer()
Toggle(isOn: binding) {
Text("")
}
.toggleStyle(CheckboxToggleStyle())
}
}
结构
struct Data: Hashable {
var base: String
var target: String
var translations: [Translations]
struct Translations: Hashable {
let language: String
var target: Bool
var texts: [String: Text]
}
struct Text: Hashable {
var translation: String
var pinned: Bool
var order: Int
}
}
国家
@State var data = Data(
base: "",
target: "",
translations: [ // ADD ALL LANGUAGES. CHECK REMINDERS-APP FOR NOTE ABOUT LANGUAGES
Data.Translations(
language: "Danish",
target: false,
texts: [
"..." : Data.Text(translation: "...", pinned: false, order: 0)
]
),
Data.Translations(
language: "Swedish",
target: true,
texts: [
"..." : Data.Text(translation: "...", pinned: false, order: 0)
]
),
Data.Translations(
language: "English",
target: true,
texts: [
"..." : Data.Text(translation: "...", pinned: false, order: 0)
]
)
]
)
【问题讨论】: