ios - 当细分发生变化时,如何在 Eureka 中更新我的列表?
问题描述
我制作了一个带有检查行列表和两个部分的表单,用户可以选择选择列表中的所有项目或不选择任何项目。
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!)
}
})
}
}
这将创建一个包含上述指定继承者列表和两个段的列表。我的问题是我不知道如何获取分段行的值。
我尝试创建一个枚举并根据 分段行方法的onChange中的值更改过滤器模式。然后,我稍后会在我的检查行列表的onChange中检查哪种模式处于活动状态,但这不起作用。
enum InheritorFilterMode {
case filterAll, filterNone
}
...
var inheritorFilterMode: InheritorFilterMode = .filterAll
我还尝试通过获取标签来获取段的值:
let segmentedRow: SegmentedRow<Int>! = self.form.rowBy(tag: "segments")
但这种方法也没有奏效。
关于在细分更改时如何更新复选框的任何建议?
解决方案
我不太确定我是否理解了这个问题。但我会尽力回答。
复选标记本身只是一种附件类型,它会更改行的值(检查repo以供参考:
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()
}
}
})
另外:您可以只使用String,而不是使用基于Interger的行类型:
<<< SegmentedRow<String>("yourTagHere") { (segment) in
segment.options = ["All","None"]
...
我自己没有测试它,但它应该可以解决问题。我花了 10 分钟阅读了 GitHub 上的Eureka文档。也许值得尝试一下 ;)
推荐阅读
- javascript - InnerHTML 正在乱序移动标签
- error-handling - 有没有办法指向 Rust 中发生错误的代码?
- fortran - 线程越多,OpenMP 运行速度越慢
- javascript - 试图弄清楚切换标签时如何关闭旧内容
- python - 由于python中的未知字符,无法将数据提交到数据库
- iis - HTTP 错误 503。尝试运行本地主机时服务不可用
- amazon-web-services - 使用 SAM 本地 lambda 函数上传图像时获取“502 BAD Gateway”
- git - -CHEAD 在 git commit 中是什么意思?
- c# - 使用 mimekit 解密带有附件的电子邮件
- r - 将 splice() 的输出保存到文本文件