Swift 没有标题的快捷选择器

Swift 没有标题的快捷选择器,swift,swiftui,uipickerview,picker,Swift,Swiftui,Uipickerview,Picker,我试图通过SwiftUI添加一个简单的选择器功能。基本上,我所期待的结果是这样的: 单击箭头时,用户应进入一个新视图,在该视图中选择所需的装置 我试过这样的方法: var units = ["ltr", "usg", "impg"] @State private var selectedUnit = 0 var body: some View { Form { Section { V

我试图通过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")
}
var单位=[“ltr”、“usg”、“impg”]
@状态私有变量selectedUnit=0
var body:一些观点{
形式{
部分{
VStack{
选择器(选择:$selectedUnit,标签:文本(“”)){
ForEach(0..<单位计数){
文本(自身单位[$0])
}
}.框架(宽度:42)
}
}
}.navigationBarTitle(“选择单位”)
}

但是,一旦这是包装在一个表单,它需要标题等,并占用了太多的空间。我只想把单位作为我的基本视图。有什么方法可以做到这一点吗?

您可以传递
标题,使其成为一行,或者使用
MenuPickerStyle

import SwiftUI

struct CustomPicker: View {
    var units = ["ltr", "usg", "impg"]
    
    @State private var selectedUnit = 0
    @Binding var title: String
    var body: some View {
        NavigationView{
            Form {
                Section {
                    Picker(selection: $selectedUnit, label: Text(title)) {
                        ForEach(0 ..< units.count) {
                            Text(self.units[$0])
                        }
                    }//.pickerStyle(MenuPickerStyle())
                }
            }.navigationBarTitle("Select unit")
        }
    }
}

struct CustomPicker_Previews: PreviewProvider {
    static var previews: some View {
        CustomPicker(title: .constant("Pre-Refuel FOB Indication"))
    }
}
导入快捷界面
结构CustomPicker:视图{
风险值单位=[“长期利率”、“美国政府”、“进口”]
@状态私有变量selectedUnit=0
@绑定变量标题:字符串
var body:一些观点{
导航视图{
形式{
部分{
选择器(选择:$selectedUnit,标签:文本(标题)){
ForEach(0..<单位计数){
文本(自身单位[$0])
}
}//.pickerStyle(MenuPickerStyle())
}
}.navigationBarTitle(“选择单位”)
}
}
}
结构CustomPicker\u预览:PreviewProvider{
静态var预览:一些视图{
CustomPicker(标题:。常数(“加油前FOB指示”))
}
}

您可以传递
标题
使其全部成为一行,或者使用
MenuPickerStyle

import SwiftUI

struct CustomPicker: View {
    var units = ["ltr", "usg", "impg"]
    
    @State private var selectedUnit = 0
    @Binding var title: String
    var body: some View {
        NavigationView{
            Form {
                Section {
                    Picker(selection: $selectedUnit, label: Text(title)) {
                        ForEach(0 ..< units.count) {
                            Text(self.units[$0])
                        }
                    }//.pickerStyle(MenuPickerStyle())
                }
            }.navigationBarTitle("Select unit")
        }
    }
}

struct CustomPicker_Previews: PreviewProvider {
    static var previews: some View {
        CustomPicker(title: .constant("Pre-Refuel FOB Indication"))
    }
}
导入快捷界面
结构CustomPicker:视图{
风险值单位=[“长期利率”、“美国政府”、“进口”]
@状态私有变量selectedUnit=0
@绑定变量标题:字符串
var body:一些观点{
导航视图{
形式{
部分{
选择器(选择:$selectedUnit,标签:文本(标题)){
ForEach(0..<单位计数){
文本(自身单位[$0])
}
}//.pickerStyle(MenuPickerStyle())
}
}.navigationBarTitle(“选择单位”)
}
}
}
结构CustomPicker\u预览:PreviewProvider{
静态var预览:一些视图{
CustomPicker(标题:。常数(“加油前FOB指示”))
}
}

不清楚你的意思。你能提供更多关于你想要实现什么的细节吗,也许是一些模型?所以基本上用户应该能够将单位从kg更改为ltr、usg或impg。要做到这一点,他们应该点击kg旁边的箭头(见上面的屏幕截图),这将把他们带到一个新的导航控制器,在那里他们选择该装置。然后点击返回返回主视图。基本上,我相信这是新的默认iOS拾荒者取代轮拾荒者?基本上就像iOS设置appOk中的任何选择器一样,这就是它在表单中的工作方式,那么有什么不对呢?所以基本上我只想要可选元素。我在堆栈中的空间只有大约40点宽,但是表单需要提供标题,例如“单位”等。我只需要实际的单位标签和箭头,然后手动导航链接并在目标视图中列出。不清楚您的意思是什么。你能提供更多关于你想要实现什么的细节吗,也许是一些模型?所以基本上用户应该能够将单位从kg更改为ltr、usg或impg。要做到这一点,他们应该点击kg旁边的箭头(见上面的屏幕截图),这将把他们带到一个新的导航控制器,在那里他们选择该装置。然后点击返回返回主视图。基本上,我相信这是新的默认iOS拾荒者取代轮拾荒者?基本上就像iOS设置appOk中的任何选择器一样,这就是它在表单中的工作方式,那么有什么不对呢?所以基本上我只想要可选元素。我在堆栈中的空间只有大约40点宽,但是表单需要提供标题,例如“单位”等。我只需要实际的单位标签和箭头,然后手动导航链接并在目标视图中列出。