4

我的用例描述了用户可以选择从 A 到 F 的多个阶段的字段的必要性。为了实现这一点,我使用了 MultipleSelectorRow n Eureka 库:

<<< MultipleSelectorRow<String>("phase") {
        $0.title = "Phase"
        $0.options = ["A", "B", "C", "D", "E", "F"]
    }

当用户选择任何选项时,我希望该值按字母顺序“A,B,C ...”显示所选选项,发生的情况是文本始终以随机顺序显示,我试图通过扩展代码实现字母顺序:

<<< MultipleSelectorRow<String>("phase") {
        $0.title = "Phase"
        $0.options = ["A", "B", "C", "D", "E", "F"]
    }.onChange { row in
        row.value = Set(row.value!.sort())
    }

该表达式已正确评​​估,但我仍然无法获得按字母顺序排序的值。

4

1 回答 1

4

在发布问题时,我意识到由于 Eureka 使用Set来存储字段,因此它永远不会被排序。

在这种情况下,我更改了 cellUpdate 方法以使用排序值更新 detailTextLabel,如下所述:

<<< MultipleSelectorRow<String>("phase") {
        $0.title = "Phase"
        $0.options = ["A", "B", "C", "D", "E", "F"]
    }.cellUpdate { cell, row in
        if (row.value != nil) {
            cell.detailTextLabel?.text =  row.value!.sort().joinWithSeparator(", ")
        }
    }

我还建议对 Eureka 库进行修复,以默认按字母顺序排序。有关https://github.com/xmartlabs/Eureka/pull/474的更多详细信息

更新 这已在 Eureka 1.7.0 (2016.07.07) 上修复并发布

于 2016-06-02T16:56:38.627 回答