我有用于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)。
我在这里做错什么了吗?
发布于 2016-06-14 14:54:01
我一直在检查您的代码,我发现如果我们使用SelectableSection,我们需要使用selectableValue而不是baseValue来进行建议,但我认为这是Eureka的错误,因为尽管我们设置了不同的值,但selectableValue和baseValue是相同的。
您可以使用row.selectableValue = obj.id而不是row.selectableValue = obj.name来缓解这种情况。
编辑过的
在Int替换中为selectableValue值尝试以下操作
<ImageCheckRow<String>, String> for <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的问题。
我希望这对你有帮助,问候
https://stackoverflow.com/questions/37748229
复制相似问题