在Swift中,如何遍历UITableView中的每个单元格然后获取其属性?

我有一个通用的UITableView,我想通过每个可见的单元格。

我怎么能在swift中做到这一点?

我目前在我的一个项目中使用它:

let cells = self.tableView.visibleCells as! Array for cell in cells { // look at data } 

这是另一个答案,但它是在Objective-C: 我如何循环通过UITableView的单元格?

你不能。 UITableView不会保留任何不可见的单元格。 一旦单元格完全移出屏幕,它就会被移除并添加到重用队列中。

你说可见细胞 。 你有能力迭代这些。 这是一些示例代码,您只需要获得自己对表的引用。

 let table = UITableView() for cell in table.visibleCells() { print(cell) } 

您的表有一个数据源,通常数据源是一个对象数组。 数据源确定表中的项目数。 您可以迭代该数据源并使用cellForRowAtIndex路径来获取单元对象。

这个问题的答案有一些关于cellForRowAtIndexPath的信息

[注意:这个答案是针对明确包含非可见细胞的原始问题。 即使在mod之后,除非意图是针对配置后表示特定的单元属性,否则仍然适合引用回数据源。

正确配置的单元格在可见时仅具有“属性”,因为它们在必要时可以重复使用。

遍历数据源的元素(迭代的细节将根据您用作数据源的结构类型而有所不同),以确定您正在寻找的属性。

如果您认为自己有正当理由检查单元格,则需要从cellForRowAtIndexPath时间单独列出它们; 每当创建新单元格时,将其添加到列表中。

我创建了一个单元格数组,每次我在cellForRowAt中创建一个单元格时,我将它添加到数组中,如果它还没有在那里。 代码如下。

 var cells:[ProfileTableViewCell]! //initialize array at class level func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { //your code to customize cell if(!cells.contains(cell)){ self.cells.append(cell) } return cell } 

然后你可以循环遍历这个数组….

 for cell in cells { //do something with cell }