Флажок SwuiftUI в одну строку - PullRequest
0 голосов
/ 10 июля 2020

в моем проекте в SwiftUi Я перечисляю некоторые данные в форме, я хочу дать пользователю возможность выбрать один элемент в списке с помощью действия касания (нельзя выбрать более одного в списке)

в приведенном ниже коде я создал список:

List {
 ForEach(listOfCycle, id: \.self) {db in
      dbList(db: db, ciclo: self.$cycleSelected)
       }
 }

и для каждой строки у меня есть представление dbList

import SwiftUI

struct dbList: View {
    @State var db : Cycle
    @Binding var ciclo : Cycle?
    @State var cicloSelected : Bool = false
    
    var body: some View {
        HStack{
            Text("Database:")
            Spacer()
            Text(db.idDatabaseAirports ?? "").foregroundColor(self.cicloSelected ? .green: .black).font(self.cicloSelected ? .title : .body)
            if self.cicloSelected {
                Image(systemName: "checkmark.circle")
            }
        }.onTapGesture {
            self.cicloSelected.toggle()
            self.ciclo = self.db
            
        }
    }
}

logi c работает, но пользователь может нажать на несколько строк и выбрать более одной, в моем проекте я должен поставить галочку только на одной строке, в то время не может быть больше одной.

есть ли способ, которым я могу поставить Избегайте множественного выбора.

Большое спасибо

1 Ответ

1 голос
/ 10 июля 2020

Предоставленный код не поддается проверке, поэтому только идея (царапина, но должна быть ясной).

Примечание: убедитесь, что Cycle равнозначно

struct dbList: View {
    @State var db : Cycle
    @Binding var ciclo : Cycle?
    
    var body: some View {
        HStack{
            Text("Database:")
            Spacer()
            Text(db.idDatabaseAirports ?? "").foregroundColor(self.db == self.cyclo ? .green: .black).font(self.cicloSelected ? .title : .body)
            if self.db == self.cyclo {
                Image(systemName: "checkmark.circle")
            }
        }.onTapGesture {
            self.ciclo = self.db
            
        }
    }
}
...