【发布时间】:2019-08-14 22:00:05
【问题描述】:
主要思想是将所有部分放在一个数组中,或者您可以建议其他解决方案来构建表格。我在下面有这段代码来为表格准备数据:
enum ExerciseSection {
case empty
case exerciseGroup(group: ExerciseGroup)
}
struct ExerciseGroup {
var muscleGroupName: String
var exercises: [ExerciseEntity]
var selectedExercisesIndexes: [Int]
}
正如你看到的使用这个ExerciseSection 枚举,我可以简单地检查该部分是否静态为空,或者它应该显示一些肌肉群名称。组还包含exercises。所以我可以简单地构建所需的单元格。
所以我通过创建ExerciseSection 的数组来为我的表准备数据。
在这个音乐会示例中,我的空单元格是将我重定向到另一个屏幕的单元格。
看起来像这样:
[empty cell for section 0, group for section 1, group for section 2... and etc]
现在我改变主意准备自己的部分,而是开始使用CoreStore.monitorSectionedList
typealias ListEntityType = ExerciseEntity
let monitor = CoreStore.monitorSectionedList(
From<ListEntityType>()
.sectionBy(#keyPath(ListEntityType.muscle.name)) { (sectionName) -> String? in
"\(String(describing: sectionName)) years old"
}
.orderBy(.ascending(\.name))
)
所以现在我的数据按关系自动分组muscle name。
我可以简单地访问监视器实例并查看它有多少个部分以及它有多少行用于相应的部分。太棒了!
但我现在的问题是如何将具有所有需要的关于分组对象和组的信息的监控对象与我的静态单元格结合起来。
在我上面的示例中,我有第 0 节的第一个元素空单元格,但监视器也已经有第 0 节。
所以我需要添加1 +,我真的不喜欢它,因为这是一个神奇的数字,总有一天它会让我大吃一惊。
func numberOfSections(in tableView: UITableView) -> Int {
return 1 + (monitor.numberOfSections() ?? 0) // My static section + monitor sections
}
在上一次我只有我所有部分的数组[ExerciseSection],所以不需要通过1 +控制代码
我需要以某种方式粘贴我的静态部分信息和monitor.sections
您之前可能从未使用过CoreStore,所以没关系,您可以将monitor 对象视为具有一些组来表示部分并且这些组具有表示行的项目的对象。所以我只需要把它结合起来。
在我的情况下,您可以简单地看到静态单元格是列表中的第一个项目,但我正在寻找灵活的解决方案,例如,我什至无法想象如何在列表中间显示静态单元格。
也许作为一种解决方案,我可以遍历监视器对象并从中创建我的枚举。不确定。
【问题讨论】:
标签: ios swift uitableview corestore