Swift Eureka SelectableSection baseValue не работает правильно
У меня есть этот код для 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
).
Я делаю что-то здесь не так?
1 ответ
Я просматривал ваш код и обнаружил, что если мы используем SelectableSection
нам нужно использовать selectableValue
вместо baseValue
для наших предложений, но я думаю, что это ошибка от Eureka
так как selectableValue
а также baseValue
одинаковы, хотя мы устанавливаем разные значения
Вы можете смягчить это, используя 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)
}
}
это работает для меня с Int на 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
Я надеюсь, что это поможет вам, с уважением