Средство выбора SwiftUI без заголовка

#swift #swiftui #uipickerview #picker

#swift #swiftui #uipickerview #средство выбора

Вопрос:

Я пытаюсь добавить простую функциональность средства выбора с помощью SwiftUI. По сути, результат, который я ищу, выглядит примерно так: введите описание изображения здесь

При нажатии на стрелку пользователь должен перейти к новому представлению, где он выбирает требуемую единицу.

Я пробовал что-то вроде этого:

 var units = ["ltr", "usg", "impg"]

@State private var selectedUnit = 0

var body: some View {
    Form {
        Section {
            VStack {
                Picker(selection: $selectedUnit, label: Text("")) {
                    ForEach(0 ..< units.count) {
                        Text(self.units[$0])
                        
                    }
                }.frame(width: 42)
            }
            
        }
    }.navigationBarTitle("Select unit")
}
 

Но как только это завернуто в форму, для этого требуется заголовок и т. Д. И Занимает слишком много места. Я просто хочу, чтобы единицы измерения были моим базовым представлением. Есть ли какой-либо способ добиться этого?

Комментарии:

1. Непонятно, что вы имеете в виду. Не могли бы вы предоставить более подробную информацию о том, чего вы пытаетесь достичь, может быть, какой-нибудь макет?

2. Таким образом, в принципе пользователь должен иметь возможность изменять единицы измерения с кг на литр, usg или impg. Для этого они должны нажать на стрелку рядом с kg (см. Снимок экрана выше), и это приведет их к новому навигационному контроллеру, где они выберут единицу измерения. Затем они нажимают назад, чтобы вернуться к основному виду. По сути, я полагаю, что это новый инструмент выбора iOS по умолчанию, заменяющий wheelPicker? В принципе, как и любой сборщик в приложении настроек iOS

3. Хорошо, вот как это работает в форме, так что не так?

4. Так что, по сути, мне нужен только выбираемый элемент. Пространство, которое у меня есть в стеке, имеет ширину всего около 40 точек, но в форме вам нужно указать заголовок, например, «единицы измерения» и т. Д. Все, что мне нужно, это фактическая метка единицы измерения и стрелка

5. Затем просто сделайте это вручную NavigationLink и List в представлении назначения.

Ответ №1:

Передайте EmptyView экземпляр в качестве метки Picker , чтобы скрыть заголовок вверху:

 Picker(selection: $selectedUnit, label: EmptyView()) {
    ForEach(0 ..< units.count) {
        Text(self.units[$0])
    }
}
 

Ответ №2:

 Picker("", selection: $data) {
    ForEach(data, id:self) { child in
        Text(child)
    }
}
.pickerStyle(InlinePickerStyle())
.labelsHidden()
 

Попробуйте .labelsHidden()