SwiftUI无标题选择器

4

我正在尝试通过SwiftUI添加一个简单的选择器功能。本质上,我想要的结果类似于这样:

enter image description here

当点击箭头时,应该会带用户到一个新的视图,在那里他们可以选择所需的单位。

我尝试了以下代码:

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")
}

但是,一旦这个单元被包装在一个表单中,就需要标题等内容,并且占用了太多的空间。我只想把这些单位作为我的基本视图。有什么方法可以实现这一点吗?


不太清楚你的意思。你能提供更多关于你想要实现什么的细节吗?或者有一些模拟图吗? - Asperi
基本上,用户应该能够从千克(kg)转换为升(ltr),美制加仑(usg)或英制加仑(impg)。为此,他们应该点击千克旁边的箭头(请参见上面的屏幕截图),然后就会进入一个新的导航控制器,在那里选择单位。然后,他们点击返回按钮回到主视图。我认为这基本上是新的默认iOS选择器,取代了wheelPicker?基本上就像iOS设置应用程序中的任何选择器一样。 - DevB1
好的,在表单中它是这样工作的,那么出了什么问题? - Asperi
所以基本上我只想要可选择的元素。我在堆栈中拥有的空间大约只有40个点宽,但是在表单中,您需要提供一个标题,例如“单位”等。我只想要实际的单位标签和箭头。 - DevB1
然后在目标视图中手动执行NavigationLink和List。 - Asperi
当然可以。只是想知道是否有一种方法可以利用Picker元素,因为它具有相当多的内置功能。但如果不可能的话也没关系。 - DevB1
3个回答

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

试用.labelsHidden()


绝对不是一个黑客API :) - Oded Ben Dov

3
将一个EmptyView实例作为Picker的标签传递,以隐藏顶部的标题:
Picker(selection: $selectedUnit, label: EmptyView()) {
    ForEach(0 ..< units.count) {
        Text(self.units[$0])
    }
}

0

试试这个:

var body: some View {
    Picker("Select a number", selection: $selectedNumber) {
        ForEach(0..<10) {
            Text("\($0)")
        }
    }
    .labelsHidden()        
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接