Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将UITableView的单元格数组出列_Ios_Swift_Uitableview - Fatal编程技术网

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中为您提供一个单元格或自定义单元格,您只需将需要显示的内容填充到该单元格中即可。