Я использую SwiftUI и хотел бы установить pickerStyle представления в зависимости от количества элементов в средстве выбора. С небольшим количеством элементов SegmentedPickerStyle() идеален, с большим количеством WheelPickerStyle() лучше.
}.pickerStyle(productsObserver.product.productFamilies?.count ?? 0 < 5 ? SegmentedPickerStyle() : WheelPickerStyle())
Сигнатура функции гласит: func pickerStyle<S>(_ style: S) -> some View where S : PickerStyle
, которая, как я узнал, использует универсальную сигнатуру функции, потому что PickerStyle использует связанный тип.
Это не должно быть такой сложной проблемой, и, вероятно, это не так - протоколы должны работать так просто = , но я этого не вижу. Любая помощь высоко ценится!
pickerStyle
— это общий метод, который принимает конкретный тип (во время компиляции), который соответствуетPickerStyle
. Так что не может быть ниSegmentedPickerStyle
, ниWheelPickerStyle
— должно быть и то, и другое. Что бы это ни было, компилятор создаст конкретный метод, например.pickerStyle<SegmentedPickerStyle>
. - person New Dev   schedule 04.04.2021