前提
ここに質問の内容を詳しく書いてください。
(例)
TypeScriptで●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
実現したいこと
緑の盤面をタップするたびに、黒色、白色の●が交互に表示されるようにしたい
→テキストデータの.foregroundColorを、.onTapGestureで@State(isPlaying)を切り替えることで変更しようとしました。
- ▲▲機能を動作するようにする
発生している問題・エラーメッセージ
タップするたびに●は表示されるのですが、全て同じ色になってしまいます。
該当のソースコード
swift
1import SwiftUI 2 3struct Home: View { 4 5 @State var moves: [String] = Array(repeating: "", count: 64) 6 @State var isplaying = false 7 8 var body: some View { 9 10 LazyVGrid(columns: Array(repeating: GridItem(.flexible(), spacing: 1), count: 8),spacing: 3) { 11 12 ForEach(0..<64, id: \.self) { index in 13 14 ZStack { 15 Color.green 16 17 Text(moves[index]) 18 .font(.system(size: 37)) 19 .fontWeight(.heavy) 20 .foregroundColor(isplaying ? .white : .black) 21 } 22 .frame(width: getWidth(), height: getWidth()) 23 .onTapGesture { 24 withAnimation(Animation.easeIn(duration: 0.5)) { 25 if moves[index] == "" { 26 moves[index] = "●" 27 } 28 isplaying.toggle() 29 } 30 } 31 } 32 } 33 } 34 35 func getWidth() -> CGFloat { 36 let width = UIScreen.main.bounds.width - (15) 37 return width / 8 38 } 39}
テキストの丸ではなく、白丸と黒丸のイメージ画像を用意して、
切り替えを行おうと思ったのですが、その場合どのようにして、タップする度に盤面の上に丸を表示させられるかがわからず、行き詰まっておりました。
質問に不備不足があった場合、申し訳ありません。
質問のアドバイス、直すべきところ、そもそも別の方法等がいい等もありましたら、
教えていただけると大変助かります。
恐れ入りますが、よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
Xcode Version 14.0.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/11/08 01:25
退会済みユーザー
2022/11/08 01:36
2022/11/08 08:36