我遇到了一些不會改變行高的串列的問題。我把它分成一個簡單的例子。
這是整個演示代碼:
struct ContentView: View {
let items = ["item 1", "item 2", "item 3"]
@State var error: [String: String] = []
var body: some View {
List {
ForEach(self.items, id: \.self) { item in
VStack {
Text(item)
.padding()
if let e = error[item] {
Text(e)
}
}
.swipeActions(edge: .leading, allowsFullSwipe: true) {
Button(action: {
self.error[item] = "ERROR!"
}) {
Image(systemName: "square.and.arrow.up")
}.background(Color.blue)
}
}
}
}
}
一旦用戶滑動單元格,我想在常規專案下方顯示一條錯誤訊息。不幸的是,現在發生的事情是這樣的:

我希望它看起來像這樣(為此,我在代碼中的“錯誤”字典中添加了一個元素):

在我看來,這似乎是許多人都會面臨的問題,但我無法找到有關此問題的太多資訊。我已經嘗試了一些東西(例如'.fixedSize'修飾符),但我嘗試過的任何東西都沒有奏效,如果有任何幫助或想法,我將不勝感激!
uj5u.com熱心網友回復:
列出快取創建的行,所以我們需要讓它知道應該從頭開始重建特定的行。可能的解決方案是使用.id依賴于與可選錯誤文本相同的條件。
使用 Xcode 13.2 / iOS 15.2 測驗

這是修改的部分代碼(為演示添加了一些額外的代碼):
.swipeActions(edge: .leading, allowsFullSwipe: true) {
Button(action: {
if nil == self.error[item] {
self.error[item] = "ERROR!"
} else {
self.error[item] = nil
}
}) {
Image(systemName: "square.and.arrow.up")
}.background(Color.blue)
}
.id(item (self.error[item] ?? "")) // << here !!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/406434.html
標籤:
上一篇:處理bash腳本中的特殊字符
下一篇:顏色隨移動暗模式自動變化
