将选择器默认设置为无可点击值作为标题
Set picker default no clickable value as title
我正在尝试开发一个 Picker
,其中包含与标题对应的字段。问题是我不明白如何使用 Picker
视图的标题字段。
这是代码。问题是 Picker
以 string "Spain"
作为标题。相反,我想要标题 "Select country"
在用户 select 字段之前可见。
struct CustomPicker: View {
@State private var selection = "Select country"
let colors = ["Spain", "France"]
var body: some View {
VStack(alignment: .leading, spacing: 4, content: {
HStack(spacing: 15) {
Picker("Select country", selection: $selection) {
ForEach(colors, id: \.self) {
Text([=10=])
}
}
.pickerStyle(DefaultPickerStyle())
}
.padding(.horizontal, 20)
})
.frame(height: 50)
.background(.white)
.cornerRadius(10)
.padding(.horizontal, 20)
}
}
您尝试做的事情并不是 Swift 的标准UI。您必须为此自定义 UI(这可能并不难)。根据您愿意妥协的程度,您可以通过稍微调整代码来获得您想要的东西。这是列表中选择器的样子(以及列表中的选择器)。
为此,我稍微修改了您的代码以包含国家/地区的枚举。
enum Country: String, CaseIterable, Identifiable {
case spain, france, germany, switzerland
var id: Self { self }
}
struct CustomPicker: View {
@State private var selection: Country = .spain
var body: some View {
NavigationView {
List {
Picker("Select Country", selection: $selection) {
ForEach(Country.allCases, id: \.self) {
Text([=10=].rawValue.capitalized)
.tag([=10=])
}
}
Picker("Select Country", selection: $selection) {
ForEach(Country.allCases, id: \.self) {
Text([=10=].rawValue.capitalized)
.tag([=10=])
}
}
.pickerStyle(.menu)
}
.navigationBarTitleDisplayMode(.inline)
.navigationTitle("Country Picker")
}
}
}
我正在尝试开发一个 Picker
,其中包含与标题对应的字段。问题是我不明白如何使用 Picker
视图的标题字段。
这是代码。问题是 Picker
以 string "Spain"
作为标题。相反,我想要标题 "Select country"
在用户 select 字段之前可见。
struct CustomPicker: View {
@State private var selection = "Select country"
let colors = ["Spain", "France"]
var body: some View {
VStack(alignment: .leading, spacing: 4, content: {
HStack(spacing: 15) {
Picker("Select country", selection: $selection) {
ForEach(colors, id: \.self) {
Text([=10=])
}
}
.pickerStyle(DefaultPickerStyle())
}
.padding(.horizontal, 20)
})
.frame(height: 50)
.background(.white)
.cornerRadius(10)
.padding(.horizontal, 20)
}
}
您尝试做的事情并不是 Swift 的标准UI。您必须为此自定义 UI(这可能并不难)。根据您愿意妥协的程度,您可以通过稍微调整代码来获得您想要的东西。这是列表中选择器的样子(以及列表中的选择器)。
为此,我稍微修改了您的代码以包含国家/地区的枚举。
enum Country: String, CaseIterable, Identifiable {
case spain, france, germany, switzerland
var id: Self { self }
}
struct CustomPicker: View {
@State private var selection: Country = .spain
var body: some View {
NavigationView {
List {
Picker("Select Country", selection: $selection) {
ForEach(Country.allCases, id: \.self) {
Text([=10=].rawValue.capitalized)
.tag([=10=])
}
}
Picker("Select Country", selection: $selection) {
ForEach(Country.allCases, id: \.self) {
Text([=10=].rawValue.capitalized)
.tag([=10=])
}
}
.pickerStyle(.menu)
}
.navigationBarTitleDisplayMode(.inline)
.navigationTitle("Country Picker")
}
}
}