У меня есть в массиве, который перечисляет компонент (), я сделал; список предопределен следующим образом:
var collectionData = [
Collectioncard(value: "1"),
Collectioncard(value: "2"),
Collectioncard(value: "reverse"),
Collectioncard(value: "4",),
Collectioncard(value: "strange"),
Collectioncard(value: "6"),
Collectioncard(value: "1")
]
И я хочу передать указанный элемент c, который я нажимаю, в другой массив (пустой массив):
var choosenData = [Choosencard]()
Вот что я объявлено в верхней части моей структуры (и у меня есть класс типа ObservableObject и @Published var в другом файле swiftui):
@State var collection = collectionData
@State var choosen = choosenData
@ObservedObject var collectionstore = CollectionStore()
@ObservedObject var choosenstore = ChoosenStore()
Итак, у меня есть первый l oop для «коллекции»:
ForEach(collection.indices, id: \.self) { index in
Component(myValue: self.collection[index].value)
.onTapGesture {
self.choosenstore.choosencard.append(
Choosendeck(value: self.collection[index].value)
)
}
}
И у меня есть второй l oop для "выбранного":
ForEach(choosenstore.choosencard) { choosen in
Component(myValue: choosen.value)
}
И это прекрасно работает: карта, которую я нажимаю из первого списка, появляется в второй список, НО я хочу иметь возможность добавить TapGesture к этому второму ForEach, чтобы иметь возможность обратить вспять Компонент: вернуть его в первый массив.
Поэтому я попытался изменить второй l oop как это:
ForEach(choosen.indices, id: \.self) { index in
Component(myValue: self.choosen[index].value)
}
И это не работает, и я понятия не имею, почему. Это та же конструкция, что и в первом l oop, поэтому я должен быть в порядке, и если я попытаюсь предварительно заполнить пустой массив var choosenData = Choosencard некоторым содержимым, появится предопределенное содержимое.
Я не знаете, что не так ...
Есть идеи?
Заранее спасибо