Как создать группу переключателей с пользовательским PickerStyle? - PullRequest
0 голосов
/ 02 февраля 2020

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

Я Android Разработчик и очень новичок в Swift. Я использую SwiftUI для своих нужд пользовательского интерфейса.

Я изучил документацию и есть протокол PickerStyle, но я не могу его реализовать и не нашел никакого учебного пособия. У меня есть следующий код для этого:

struct RadioPickerStyle: PickerStyle {

    static func _makeView<SelectionValue>(value: _GraphValue<_PickerValue<RadioPickerStyle, SelectionValue>>, inputs: _ViewInputs) -> _ViewOutputs where SelectionValue : Hashable {
//        Text("\(value)")
    }

    static func _makeViewList<SelectionValue>(value: _GraphValue<_PickerValue<RadioPickerStyle, SelectionValue>>, inputs: _ViewListInputs) -> _ViewListOutputs where SelectionValue : Hashable {
//        List(inputs) {
//            ForEach
//        }
    }

Я хочу использовать его в следующем коде:

...
    @State var gender: Int = 0
    let genderOptions: [String] = ["Male", "Female", "Other"]
...
                    Picker("Gender", selection: $gender) {
                        ForEach(0 ..< genderOptions.count) { option in
                            Text(self.genderOptions[option])
                                .tag(self.gender)
                        }
                    }
                    .pickerStyle(RadioPickerStyle())
...

Кто-нибудь может дать мне представление о том, что _ViewInputs, _ViewOutputs, _ViewListInputs и _ViewListOutputs?

1 Ответ

0 голосов
/ 20 февраля 2020

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

@State private var selected : Int = 0

Picker("Gender:", selection: $selected){
    Text("Male").tag(0)
    Text("Female").tag(1)
    Text("Male").tag(0)   
}.pickerStyle(RadioPickerStyle())

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