从单个数组数据和多个部分填充 tableView

Posted

技术标签:

【中文标题】从单个数组数据和多个部分填充 tableView【英文标题】:Populate tableView from single-Array-Data and with multiple sections 【发布时间】:2017-02-19 20:50:43 【问题描述】:

我想填充一个 tableView。

我的数据在一个数组中

var myDataArray = [DataEntry]()

DataEntry-type 是一个协议,例如:

protocol DataEntry: class 

    var idx: Int  get set 
    var category: String  get set 
    var title: String  get set 

我的数据数组的顺序是这样的:

idx=0: category = "Section0" / title = "Row0"

idx=1: category = "Section0" / title = "Row1"

idx=2: category = "Section0" / title = "Row2"

idx=3: category = "Section1" / title = "Row0"

idx=4: category = "Section1" / title = "Row1"

idx=5: category = "Section2" / title = "Row0"

idx=6: category = "Section2" / title = "Row1"

如何从此 dataArray 填充 tableView ? (当然,section和rows需要根据数组的内容看)

【问题讨论】:

【参考方案1】:

从单个数组中填充部分和行不是一个好主意。您已经注意到它过于复杂且根本不稳定。

唯一可行的情况是,如果您的数组在每个部分中始终具有相同数量的行(第 1 部分始终包含 3 个元素,第 2 部分始终包含 2 个元素,等等)。像这样,您总是可以知道您的部分开始的偏移量(0 表示部分 0,3 表示部分 1,依此类推)。

当且仅当这是你的情况,你可以这样做

let offsets = [0,3,5]
let dataEntry = myDataArray[offsets[indexPath.section]+indexPath.row]

但我怎么强调都不过分: 这绝不是好的做法,应该完全避免。

【讨论】:

感谢您的解释!不幸的是,我的数组并不总是您描述的形式。因此,我需要找到另一种解决方案。什么是好的做法?为了创建带有dequeueReusableCellindexPath.rowindexPath.section 的tableView-cells,我需要将我的数据带入什么形式?任何帮助表示赞赏!

以上是关于从单个数组数据和多个部分填充 tableView的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中的数组中使用多个部分和多个字典填充 TableView

使用核心数据和数组从 TableView 中插入和删除行

在 JS 中用多个值填充数组的最快方法。我可以将一些模式或函数传递给 JS 中单个值的方法填充吗? [复制]

如何使用单个处理程序处理多个 TextInput?

猫鼬填充数组中的单个项目

从 SQL 表获取的数组中的单个 IF 语句与多个 IF 语句 [关闭]