0

Eureka私はライブラリ用にこのコードを持っています:

    let section = SelectableSection<ImageCheckRow<String>, String>("Section:", selectionType: .MultipleSelection)
    section.tag = "section"
    for obj in arrList {
        section <<< ImageCheckRow<String>(obj.name){ row in
            row.title = obj.name
            row.selectableValue = obj.name
            row.baseValue = obj.id
            row.value = nil
        }
    }

これは選択可能なリストを示していますが、次のコードは正常に機能しません:

@IBAction func saveAction(sender: AnyObject) {
    let section = self.form.sectionByTag("section") as? SelectableSection<ImageCheckRow<String>, String>
    for obj in section!.selectedRows() {
        print(obj.baseValue)
    }
}

これはnameフィールドを出力しますが、id( row.baseValue = obj.id) を出力する必要があります。

私はここで何か間違っていますか?

4

1 に答える 1

1

私はあなたのコードを見直していて、これを見つけました。使用する場合は、提案の代わりにSelectableSection使用する必要があるようですが、異なる値を設定してもとは同じであるため、これはバグだと思いますselectableValuebaseValueEurekaselectableValuebaseValue

row.selectableValue = obj.id代わりに使用してこれを軽減できますrow.selectableValue = obj.name

編集済み

置換のInt値に対してこれを試してくださいselectableValue

<ImageCheckRow<String>, String>為に<ImageCheckRow<Int>, Int>

も交換section <<< ImageCheckRow<String>(obj.name)しますsection <<< ImageCheckRow<Int>(obj.name)

そして最後に私がするようにsaveActionを調整します

@IBAction func saveAction(sender: AnyObject) {
    let section = self.form.sectionByTag("section") as? SelectableSection<ImageCheckRow<Int>, Int>
    for obj in section!.selectedRows() {
        print(obj.baseValue)
    }
}

これは、selectableValueのIntで機能します

問題はこれ

public final class ImageCheckRow<T: Equatable>: Row<T, ImageCheckCell<T>>, SelectableRowType, RowType {
    public var selectableValue: T?
    required public init(tag: String?) {
        super.init(tag: tag)
        displayValueFor = nil
    }
}

これselectableValueは、宣言で渡す任意の型の型であり<ImageCheckRow<Int>, Int>、問​​題を解決する理由ですInt

これがお役に立てば幸いです、よろしく

于 2016-06-14T14:54:01.483 に答える