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 に答える