簡體   English   中英

如何停止所有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM