Как выбрать элемент массива, который представлен в представлении списка SwiftUI? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть массив типов велосипедов. Чтобы сделать вид средства выбора типа велосипеда, я перебрал массив в представлении списка SwiftUI. Тем не менее, я не смог найти никакого решения, как выбрать / сохранить элемент списка, к которому подключен, в переменную State. Может кто-нибудь предложить мне решение, пожалуйста?

Мой код здесь ниже:

import SwiftUI

struct BikeTypePickerView: View {
    @State var selectedBikeType: String = ""

    var bikeTypes: [String] = ["BIKE TYPE", "Benelli 125 2 C", "Benelli 125 SE", "Benelli 125 Sport", "Benelli 125 T", "Benelli 250 C", "Benelli 250 Quattro", "Benelli 250 Sport", "Benelli 254 Quattro", "Benelli 304", "Benelli 350 RS", "Benelli 354"]

    init() {
        UITableView.appearance().separatorColor = .clear
    }
    var body: some View {
        VStack {
            List(bikeTypes, id: \.self, selection: $selectedBikeType) { type in
                Text(type)
            }
        }
        .frame(width: 150, height: 400)
        .font(.system(size: 13))
        .shadow(radius: 5)
    }
}

struct BikeTypePickerView_Previews: PreviewProvider {
    static var previews: some View {
        BikeTypePickerView()
    }
}

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

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

struct ContentView: View {

    @State var selectedBikeType = Set<String>()

    var bikeTypes: [String] = ["BIKE TYPE", "Benelli 125 2 C", "Benelli 125 SE", "Benelli 125 Sport", "Benelli 125 T", "Benelli 250 C", "Benelli 250 Quattro", "Benelli 250 Sport", "Benelli 254 Quattro", "Benelli 304", "Benelli 350 RS", "Benelli 354"]

    init() {
        UITableView.appearance().separatorColor = .clear
    }

    var body: some View {
        VStack {
            List(self.bikeTypes, id: \.self, selection: $selectedBikeType) { type in
                Text(type)
                    .onTapGesture {
                    if self.selectedBikeType.contains(type) {
                        self.selectedBikeType.remove(type)
                    }
                    else{
                        self.selectedBikeType.insert(type)
                    }
                    print(self.selectedBikeType)
                }
            }
        }
        .frame(width: 150, height: 400)
        .font(.system(size: 13))
        .shadow(radius: 5)
    }
}
0 голосов
/ 17 апреля 2020

попробуйте

import SwiftUI

struct BikeTypePickerView: View {
    @Binding var selectedBikeType: String

    var bikeTypes: [String] = ["BIKE TYPE", "Benelli 125 2 C", "Benelli 125 SE", "Benelli 125 Sport", "Benelli 125 T", "Benelli 250 C", "Benelli 250 Quattro", "Benelli 250 Sport", "Benelli 254 Quattro", "Benelli 304", "Benelli 350 RS", "Benelli 354"]

    init() {
        UITableView.appearance().separatorColor = .clear
    }
    var body: some View {
        VStack {
            List(bikeTypes, id: \.self, selection: $selectedBikeType) { type in
                Text(type)
            }
        }
        .frame(width: 150, height: 400)
        .font(.system(size: 13))
        .shadow(radius: 5)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...