[英]How can I make my View stop unnecessary rendering with using CustomType for Binding in SwiftUI?
[英]How can I stop all my SWIFTUI buttons toggling together?
我想創建一個方形按鈕網格,可以單擊/點擊以在黑色和白色之間切換。 作為中點,我正在創建執行此操作的按鈕行-請參見下面的代碼。 但是,當我單擊其中之一時,所有按鈕都會一起切換。 我看不到這是為什么,因為每個單元都有一個狀態變量?
struct ContentView: View {
var body: some View {
ZStack {
Color.green
.edgesIgnoringSafeArea(.all)
RowOfCellsView(string: "X.X.X.X")
}
}
}
struct Cell: Identifiable {
var id: Int
var state: Bool
}
struct RowOfCellsView: View {
var string: String
var cells: [Cell] {
string.map { Cell(id: 1, state: $0 == ".") }
}
var body: some View {
HStack {
ForEach(cells) { cell in
CellView(isBlack: cell.state, symbol: "Q")
}
}
}
}
struct CellView: View {
@State var isBlack: Bool
@State var symbol: String
var body: some View {
Button(action: { self.isBlack.toggle() }) {
Text("")
.font(.largeTitle)
.frame(width: 40, height: 40)
.aspectRatio(1, contentMode: .fill)
}
.background(isBlack ? Color.black : Color.white)
}
}
啊哈-剛注意到我將所有單元格的ID設置為1-這就是問題所在! 因此需要有一種方法為每個Cell設置不同的ID。
例如可以:
string.enumerated().map { Cell(id: $0.0, state: $0.1 == ".") }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.