应用程序在从表单(SwiftUI)的选择器上选择时扩展“其他”类别)

Posted

技术标签:

【中文标题】应用程序在从表单(SwiftUI)的选择器上选择时扩展“其他”类别)【英文标题】:App to expand 'Other' category when selected on picker from a form (SwiftUI)) 【发布时间】:2020-09-23 23:19:35 【问题描述】:

我想为用户提供一个类别列表(通过表单中包含的选择器),最后列出的类别是“其他”。如果用户选择“其他”,应用程序将在表单中添加一个字段供用户输入新的类别名称(将保存以供将来参考)。

我已经能够显示选择器列表:

Section 
    Picker(selection: $courseIndex, label: Text("Course")) 
        ForEach(0 ..< courses.count) 
            Text(self.courses[$0]).tag($0)
         //ForEach
     // Picker                    
 // Section - Course

但我无法确定如何显示新字段以供用户输入新类别。

谢谢。

【问题讨论】:

您可以使用.onChange(of: VAR),如果选择了其他,请为新部分启用标志,但可能有更好的方法 【参考方案1】:

您可以在 BodyBuilder 中添加使用if,例如:

struct ContentView: View 
    @State var courseIndex: Int = 2
    
    let courses = ["Course 1", "Course 2", "Other"]
    
    var body: some View 
        VStack 
            Section 
                Picker(selection: $courseIndex, label: Text("Course")) 
                    ForEach(0 ..< courses.count) 
                        Text(self.courses[$0]).tag($0)
                    
                
            
        
            if courseIndex == 2 
                Text("Show Extra")
            
        
    

【讨论】:

以上是关于应用程序在从表单(SwiftUI)的选择器上选择时扩展“其他”类别)的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 无法删除选取器上方的空间 - 表单版本

带有文本和图像的 SwiftUI 表单选择器

表单中的 SwiftUI 选择器 - 索引超出范围

SwiftUI 表单中的选取器在选择一个值后变为灰色

Swift UI 中的 UIPicker

SwiftUI List 如何识别在 macOS 上选择了哪些项目