从单个数组数据和多个部分填充 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]
但我怎么强调都不过分: 这绝不是好的做法,应该完全避免。
【讨论】:
感谢您的解释!不幸的是,我的数组并不总是您描述的形式。因此,我需要找到另一种解决方案。什么是好的做法?为了创建带有dequeueReusableCell
和indexPath.row
和indexPath.section
的tableView-cells,我需要将我的数据带入什么形式?任何帮助表示赞赏!以上是关于从单个数组数据和多个部分填充 tableView的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中的数组中使用多个部分和多个字典填充 TableView