Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用SwiftForms实现动态UIPickerView列表_Swift_Uipickerview - Fatal编程技术网

用SwiftForms实现动态UIPickerView列表

用SwiftForms实现动态UIPickerView列表,swift,uipickerview,Swift,Uipickerview,我正在使用为我的表单创建UIPickerView。在SwiftForms示例中执行此操作的方式如下: row = FormRowDescriptor(tag: "thingsTag", rowType: .Picker, title: "Things") row.configuration[FormRowDescriptor.Configuration.Options] = [1, 2, 3] row.configuration[F

我正在使用为我的表单创建UIPickerView。在SwiftForms示例中执行此操作的方式如下:

    row = FormRowDescriptor(tag: "thingsTag", rowType: .Picker, title: "Things")
    row.configuration[FormRowDescriptor.Configuration.Options] = [1, 2, 3]
    row.configuration[FormRowDescriptor.Configuration.TitleFormatterClosure] = { value in
        switch( value ) {
        case 1:
            return "Thing 1"
        case 2:
            return "Thing 2"
        case 3:
            return "Thing 3"
        default:
            return nil
        }
        } as TitleFormatterClosure
    section1.addRow(row)
显然,这条路线需要你有一个预先确定的“事物”数组来选择。但是,我有一个动态数组,每个用户都有不同的数组,这取决于他们以前在应用程序中所做的选择。(有时选择器有3个选择,有时有5个、9个等)


如何获取
row.configuration[FormRowDescriptor.Configuration.TitleFormatterClosure
部分是否可以在没有switch语句的情况下正常工作?我知道for循环更适合于此,但我无法找出如何在不引发错误的情况下使其正常工作。

如果在数组中有picker视图的标题,为什么不使用下标语法来获取ti从数组中提取tle,使用值var

假设已定义以下数组,并使用以下值初始化

let possibleOptions = ["Doctor", "Teacher", "Engineer", "Politician"]
(请注意,在我的示例中,这是允许的,因为不应该修改它。如果选择器视图根据输入的输入添加/删除值,则数组必须是一个变量。)

然后,在闭包中,假设数组的显示顺序与希望的顺序一致,则可以在闭包中返回以下内容:

return possibleOptions[value]
但是,请注意,如果您尝试从不存在的数组中为值下标,那么您的程序将崩溃。假设您的所有实现都是正确的,这不应该发生,但是在返回picker视图的标题时检查它不会有什么坏处

最终的代码如下所示:

row = FormRowDescriptor(tag: "thingsTag", rowType: .Picker, title: "Things")
row.configuration[FormRowDescriptor.Configuration.Options] = [1, 2, 3]
row.configuration[FormRowDescriptor.Configuration.TitleFormatterClosure] = { value in
    return possibleOptions[value]
    } as TitleFormatterClosure
section1.addRow(row)

因此,我收到错误“无法将类型为'TitleFormatterClose'的值分配给类型为'Any'的值”