gpt4 book ai didi

swift - 使用 SwiftForms 实现动态 UIPickerView 列表

转载 作者:行者123 更新时间:2023-11-28 09:08:29 25 4
gpt4 key购买 nike

我正在使用 SwiftForms为我的表单创建一个 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 等)

如何在没有 switch 语句的情况下使 row.configuration[FormRowDescriptor.Configuration.TitleFormatterClosure 部分正常工作?我知道 for 循环更适合这个,但我无法弄清楚如何让它在不抛出错误的情况下工作。

最佳答案

如果您在数组中有选择器 View 的标题,为什么不使用值 var 使用下标语法从数组中获取标题?

假设您定义了以下数组,并使用以下值进行了初始化。

let possibleOptions = ["Doctor", "Teacher", "Engineer", "Politician"]

(请注意,在我的示例中这是 let,因为不应修改它。如果您的选择器 View 根据输入的输入添加/删除值,则您的数组必须是一个变量。)

然后,在闭包中,假设你的数组是按照你希望它显示的顺序排列的,那么你可以在闭包中返回以下内容:

return possibleOptions[value]

但是,请注意,如果您尝试下标数组中 存在的值,那么您的程序将会崩溃。假设您的所有实现都是正确的,这不应该发生,但是在返回选择器 View 的标题时检查它也没有什么坏处。

最终代码看起来像这样:

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)

关于swift - 使用 SwiftForms 实现动态 UIPickerView 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30204477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com