У меня есть массив объектов SplitItem, которые я пытаюсь сделать для l oop и показать текстовое поле. Я получаю сообщение об ошибке. Для этого кода используется неразрешенный идентификатор '$ item',
import SwiftUI
struct ContentView: View {
@State var selectedAccount:Int = -1
@State var splitItems:[SplitItem] = [
SplitItem(account: 0, amount: "1.00", ledger: .Accounts),
SplitItem(account: 0, amount: "2.00", ledger: .Accounts),
SplitItem(account: 0, amount: "3.00", ledger: .Budgets),
SplitItem(account: 0, amount: "4.00", ledger: .Budgets)
]
var body: some View {
VStack {
ForEach(self.splitItems) { item in
TextField(item.amount, text: $item.amount)
}
}.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}
struct SplitItem: Identifiable {
@State var id:UUID = UUID()
@State var account:Int
@State var amount:String
@State var ledger:LedgerType
}
enum LedgerType:Int {case Accounts=0,Budgets=1}
, если я изменяю text: $item.amount
на text: item.$amount
, он компилируется, но получающееся текстовое поле не позволяет мне его изменить. То же самое, если я изменяю для l oop на индексы и пытаюсь выполнить привязку на основе индекса,
ForEach(self.splitItems.indices) { index in
TextField(self.splitItems[index].amount, text: self.$splitItems[index].amount)
}
, у него нет проблем с отображением Text(item.amount)
, только когда я пытаюсь выполнить привязку, иметь проблему. Я думаю, что это как-то связано с массивом, потому что, если я пытаюсь привязать отдельный разделенный элемент, а не массив, к текстовому полю, он работает просто отлично. Я также попытался создать подпредставление с текстовым полем и вызвать его с foreach l oop, но я получил ту же ошибку.
также это swiftui для Ma c, а не iOS.