【发布时间】:2020-08-22 14:40:35
【问题描述】:
This is how it looks before and after..
我有一个 ForEach 循环,当我点击卡片时,它会在数组中附加一个新元素,然后它应该显示 2 张卡片。 但是还有一张卡。 (但我附加了新的卡片元素) 那我该怎么办?
struct TimelineFromUserView: View {
var card: [Card] = cardData
var body: some View {
VStack {
HStack {
Text("History").bold()
.font(.largeTitle)
.padding(.top, 20)
.padding(.leading, 20)
Spacer()
}
Divider()
ScrollView(.vertical, showsIndicators: false) {
VStack(spacing: 30) {
ForEach(card) { item in
CardForTimeline(card: item)
.onTapGesture {
print("juhuu")
cardData.append(Card(number: 2, start: "01.10.2021", end: "20.10.2021", days: 19, success: false))
print(cardData)
}
.padding()
}
}
.padding(.top, 10)
}
}
}
}
struct Card: Identifiable{
var id = UUID()
var number: Int
var start: String
var end: String
var days: Int
var success: Bool
}
var cardData: [Card] = [
Card(number: 1 ,start: "05.06.2020", end: "15.06.2020", days: 10, success: true)
]
【问题讨论】:
-
您是否会显示完整的视图变体,因为不清楚您如何存储和更新卡片?
-
就是这样。我没有更多代码。
-
问题是
cardData不是@State变量。 -
@matt 所说的内容,加上您在
ForEach()中使用的名为card的cardData的副本,但您要附加到cardData的原始版本。数组是 Swift 中的值类型,因此您在复制后对cardData所做的操作不会反映在复制中。 -
谢谢!你知道如何将 cardData 保存到 UserDefaults 吗?