Swift Eureka SelectableSection baseValue无法正常工作

时间:2016-06-10 12:24:16

标签: ios swift eureka-forms

我有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字段,但需要打印idrow.baseValue = obj.id)。

我在这里做错了吗?

1 个答案:

答案 0 :(得分:1)

我一直在审核你的代码而我发现了这一点,似乎如果我们使用SelectableSection,我们需要使用selectableValue而不是baseValue作为我们的建议,但我认为这是来自Eureka的错误,因为selectableValuebaseValue是相同的,尽管我们设置了不同的值

您可以使用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)
    }
}

这适用于我在Intable selectableValue

问题是这个

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

我希望这可以帮助你,问候