用SwiftForms实现动态UIPickerView列表
我正在使用为我的表单创建UIPickerView。在SwiftForms示例中执行此操作的方式如下:用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
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'的值”