Как узнать, какая кнопка нажата в списке представлений - SwiftUI - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть ResidentsView(), который содержит список ResidentCell(), и каждая ячейка имеет свою собственную кнопку. Эта кнопка добавляет полосу к своему имени. В настоящее время это увеличивает только резидента, потому что я дал его в качестве резидента по умолчанию для тестирования. Однако я хочу, чтобы полосы человека увеличивались при нажатии кнопки под его именем. Как мне узнать, какая кнопка нажата из четырех ячеек, чтобы я знал, чьи полосы мне нужно увеличить?

struct ResidentCell: View {

    @State var showStripeView: Bool = false


    var resident: Resident

    var body: some View {


        VStack {
            HStack{
                VStack(alignment: .leading) {
                    Text(resident.name)
                        .font(.title)
                    Text(String(resident.year))
                        .font(.caption)
                }.padding(.leading)

                Spacer()

                Text("Streepjes: \(numberOfStripes(stripes: resident.stripes))")
                    .font(.subheadline)
                    .fontWeight(.bold)
                    .padding(.trailing)
                    .foregroundColor(resident.stripes > 4 ? .red : .black)

            }

            Divider()
                .frame(width: 200)

            Button(action: {
                self.showStripeView.toggle()
                }) {
                Text("Add stripe")
                    .padding()
                    .border(Color.green, width: 5)
                    .foregroundColor(.black)
                    .cornerRadius(5)


                }
            .padding(.top, 5)
            .buttonStyle(BorderlessButtonStyle())
            .sheet(isPresented: $showStripeView) {
                AddStripeView(currentUser: Resident.testResidents[0])
            }
        }
    }

    func numberOfStripes(stripes: Int) -> String {
        let count = stripes

        var stripeString = ""

        for _ in (1...count) {
            stripeString.append("I")
        }

        return stripeString
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...