gpt4 book ai didi

ios - SwiftUI:删除ForEach中的最后一行

转载 作者:行者123 更新时间:2023-12-01 16:05:39 25 4
gpt4 key购买 nike

我正在尝试删除ForEach内的行。删除最后一行总是会引发索引超出范围异常。删除任何其他行都不会。

ForEach(Array(player.scores.enumerated()), id: \.element) { index, score in
HStack {
if self.isEditSelected {
Button(action: {
self.player.scores.remove(at: index)
}, label: {
Image("delete")
})
}
TextField("\(score)", value: self.$player.scores[index], formatter: NumberFormatter())
}
}

我尝试使用 ForEach(player.indices...)ForEach(player.scores...),但是看到相同的问题。

在我看来,崩溃发生在此处 self.$player.scores[index],因为将索引硬编码为除最后一行有效以外的任何值。

有谁知道如何解决这一问题?或者,如果有更好的方法。

最佳答案

这是修复

ForEach(Array(player.scores.enumerated()), id: \.element) { index, score in
HStack {
if self.isEditSelected {
Button(action: {
self.player.scores.remove(at: index)
}, label: {
Image("delete")
})
}
TextField("\(score)", value: Binding( // << use proxy binding !!
get: { self.player.scores[index] },
set: { self.player.scores[index] = $0 }),
formatter: NumberFormatter())
}
}

关于ios - SwiftUI:删除ForEach中的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61434129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com