我有以下代碼:
final class State: ObservableObject {
@Published var isSelected = false
@Published var selectedColor: Color = .white
}
private enum Constants {
static let colors: [Color] = [.black, .white, .blue, .green, .yellow, .red]
}
var body: some View {
VStack(spacing: Constants.spacing) {
HStack {
Eraser()
ForEach(Constants.colors, id: \.self) { color in
PaintColor(color: color, isSelected: $state.isSelected)
.frame(maxWidth: .infinity)
}
}
.padding(Constants.colorsInsets)
}
.background(Constants.backgroundColor)
}
我實際上想做的設定或isSelected基于. 房產可以嗎?我想做類似的事情:PaintColortruefalseselectedColormap@Published
PaintColor(color: color, isSelected: state.selectedColor == color)
uj5u.com熱心網友回復:
可計算系結是可能的,例如
PaintColor(color: color, isSelected: Binding(
get: { state.selectedColor == color },
set: { state.selectedColor = $0 ? color : .white }
))
.frame(maxWidth: .infinity)
*實際上,如果可能全部未選中,則需要將 selectedColor 設為可選(然后重置為nil而不是.white上面)
@Published var selectedColor: Color? = .white
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/487072.html
上一篇:嵌套序列化程式創建新物件
