SwiftUI TVOS - как создать группу карточек или кнопок, которые принимают массив и на которые можно нажимать отдельно на некотором типе шаблона сетки?

Изображение карты. Здесь я попробовал использовать .onLongPressGesture, но безрезультатно:

      import SwiftUI

struct ContentView: View {
    @State private var show = true
    @Binding var symbol:String
    @Binding var background:Color
    
    var body: some View {
        HStack {
            ForEach(0..<4) {
                index in
                CardView(isFaceUp: false)
            }
        }
        .padding()
        .foregroundColor(Color.orange)
        .font(Font.largeTitle)
        
        HStack {
            ForEach(0..<4) {
                index in
                CardButton(show: $show, symbol: $symbol, background: $background)
            }
        }
    }
}

struct CardView: View {
    var isFaceUp: Bool
    
    var body: some View {
        ZStack {
            if isFaceUp {
                RoundedRectangle (cornerRadius: 13).fill(Color.white)
                RoundedRectangle (cornerRadius: 13).stroke(lineWidth: 3)
                Text ("*")
            } else {
                RoundedRectangle (cornerRadius: 13).fill()
            }
        }.onLongPressGesture(minimumDuration: 0.01, pressing: { _ in }) {
            print("pressed")
        }
    }
}

Я также пробовал много типов кнопок, но без особого успеха. В приведенном ниже примере кнопки создаются, но все они переворачиваются, если выбрана одна из них.

      struct CardButton: View {
    
    @Binding var show: Bool
    @Binding var symbol:String
    @Binding var background:Color
    
    var body: some View {
        
        Button(action: {
            
            self.show.toggle()
            
        }) {
            
            ZStack {
             
                if show {
                    
                    Image("Back").resizable().aspectRatio(1, contentMode: .fit).opacity(1.0)
                        .cornerRadius(22)
                    
                } else {
                    
                    Image("Front")
                        .resizable().aspectRatio(1, contentMode: .fit).background(background.opacity(1.0))
                        .cornerRadius(22)
                    
                }
            }
        }
    }
}

Расположение кнопок

Я пытаюсь сделать это в SwiftUI без использования раскадровки. Мне нужна помощь - я работал над этим с SUI1, когда возникла ошибка «это еще невозможно сделать в TVOS», но кажется, что они обновили код в SUI3, и он должен как-то работать ???

0 ответов

Другие вопросы по тегам