Ios 当细分市场发生变化时,如何在Eureka中更新我的列表?
我制作了一个表单,其中包含一个检查行列表和两个部分,用户可以选择选择列表中的所有项目,也可以选择不选择任何项目Ios 当细分市场发生变化时,如何在Eureka中更新我的列表?,ios,swift,eureka-forms,Ios,Swift,Eureka Forms,我制作了一个表单,其中包含一个检查行列表和两个部分,用户可以选择选择列表中的所有项目,也可以选择不选择任何项目 private func setupForm() -> Void { guard let inheritorList = getInheritorList() else { return } form +++ Section()
private func setupForm() -> Void {
guard let inheritorList = getInheritorList() else {
return
}
form +++ Section()
<<< LabelRow() { row in
row.title = "Choose between multiple inheritors"
}
<<< SegmentedRow<Int>("segments") { row in
row.options = [1,2]
row.displayValueFor = { idx in
if idx == 1 {
return "All"
} else {
return "None"
}
}
}
.onChange({ row in
if row.value! == 1 {
//All checkboxes should be selected
self.inheritorFilterMode = .filterAll
} else {
//All checkboxes should be deselected
self.inheritorFilterMode = .filterNone
}
})
for inheritor in inheritorList {
form.last! <<< CheckRow("inheritors") { listRow in
listRow.title = inheritor.name
listRow.value = nil
}
.onChange({ row in
if row.value! {
self.inheritorsArray.insert(row.tag!)
} else {
self.inheritorsArray.remove(row.tag!)
}
})
}
}
我还试图通过获取标记来获取段的值:
let segmentedRow: SegmentedRow<Int>! = self.form.rowBy(tag: "segments")
let segmentedRow:segmentedRow!=self.form.rowBy(标记:“段”)
但这种方法并不奏效
有没有关于如何在片段更改时更新复选框的建议?我不太确定我是否理解这个问题。但我会尽力回答的 复选标记本身只是一种附件类型,可更改行的值(请检查以获取参考:
accessoryType = row.value == true ? .checkmark : .none
因此,您不应该过滤结果(这不应该像您那样工作),而应该循环表单中的所有行。有一种方法form.allRows(),允许您循环表单中的所有行,然后您只需要检查选择了哪一段(在您的情况下是“全部”还是“无”):
因此,在SegmentedRow的onChange块中,您可以执行以下操作:
.onChange({ segmentedRow in
for row in self.form.allRows {
if row is CheckRow {
if segmentedRow.value == "All" {
row.baseValue = true
} else if segmentedRow.value == "None" {
row.baseValue = false
}
// don't forget to call update cell - otherwise the cell won't update
row.updateCell()
}
}
})
另外:不使用基于整数的行类型,只需使用字符串即可:
<<< SegmentedRow<String>("yourTagHere") { (segment) in
segment.options = ["All","None"]
...
这是给我的!非常感谢,先生。我把所有的行都循环了一遍,但把自己弄糊涂了,因为我得到了我现在理解的一系列行:)
<<< SegmentedRow<String>("yourTagHere") { (segment) in
segment.options = ["All","None"]
...