Ios 将UITableView的单元格数组出列
我有一个这样的结构:Ios 将UITableView的单元格数组出列,ios,swift,uitableview,Ios,Swift,Uitableview,我有一个这样的结构: struct Elements { var name: String var cells: [UITableViewCell] } 此结构用数据填充到另一个类中,然后传递到UITableViewController,其中有一个如下元素数组: var elements: [Elements] 我想知道的是,是否可以将该数组中的单元格排到UITableView,因为这样做不起作用: func tableView(_ tableView: UITableView, cel
struct Elements {
var name: String
var cells: [UITableViewCell]
}
此结构用数据填充到另一个类中,然后传递到UITableViewController,其中有一个如下元素数组:
var elements: [Elements]
我想知道的是,是否可以将该数组中的单元格排到UITableView,因为这样做不起作用:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return elements[indexPath.section].cell[indexPath.row]
}
您不应该直接保留单元格。您的数据应该与它的UI实现不同。如果执行此操作,则会丢失
UITableView
提供的所有重复使用单元格的功能。例如,如果您的列表中有10000个元素,您现在已经创建并保留了10000个UITableViewCells
,因为您实际上只需要屏幕上的少数元素(加上一些额外的元素)这就是UITableView
为您处理的内容。@SupporterOfTruth我采用了在结构中包含数据和单元格标识符的方法(因为我有5种类型的单元格),但在tableViewController中处理它们时,我最终得到了太多的代码。这就是为什么我想知道是否可以使用数据构建单元格,然后将其添加到TableView中。这当然是可能的,但不可取。无论是什么规模,你都会遇到问题。对于5种类型的单元格,最好有5个子类UITableViewCell
来决定在对单元格进行排队时需要哪一个子类,然后将数据结构传递给该单元格子类,以便根据需要设置单元格自己的UI。@supportoftruth是正确的。你想用苹果的方式,而不是你的方式。这将为你节省大量的悲伤,不仅在这个例子中,在其他例子中也是如此。让Apple的例程在cellForRowAt中为您提供一个单元格或自定义单元格,您只需将需要显示的内容填充到该单元格中即可。