在下面的代碼中,選擇器效果很好,但是 LazyVGrid 僅顯示為一列(應該是三列,如 pickColorTable var 所示)。
var pickColorTable:[GridItem] = Array(repeating: .init(.flexible(), spacing: 5), count: 3)
Form {
LazyVGrid(columns: pickColorTable, spacing: 5) {
Picker("Color", selection: $pickColor) {
ForEach(colorTable, id: \.self) { color in
Rectangle()
.frame(width: 70, height: 70)
.foregroundColor(Color(color))
.cornerRadius(20)
}
}
}
}

另一方面,如果第二行與第三行交換,如下面的代碼,LazyVGrid 會正確呈現,但選擇器停止作業(當我單擊所需的顏色時沒有任何反應)。
Form {
Picker("Color", selection: $pickColor) {
LazyVGrid(columns: pickColorTable, spacing: 5) {
ForEach(colorTable, id: \.self) { color in
Rectangle()
.frame(width: 70, height: 70)
.foregroundColor(Color(color))
.cornerRadius(20)
}
}
}
}

有沒有人有讓 LazyVGrid 在選擇器中正常作業的提示?
uj5u.com熱心網友回復:
出現的問題是您的 Picker 的內容是 aLazyVGrid而不是Rectangles的串列。您可以做的是為每個矩形添加一個點擊手勢。然后手動變異pickColor 例如
Form {
Picker("Color", selection: $pickColor) {
LazyVGrid(columns: pickColorTable, spacing: 5) {
ForEach(colorTable, id: \.self) { color in
Rectangle()
.frame(width: 70, height: 70)
.foregroundColor(Color(color))
.cornerRadius(20)
.onTapGesture {
pickColor = color
}
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/392862.html
下一篇:條件表單輸入-顯示/隱藏多個欄位
