获取 UITableView 中的所有单元格?

Posted

技术标签:

【中文标题】获取 UITableView 中的所有单元格?【英文标题】:Get all cells In UITableView? 【发布时间】:2012-12-04 09:34:29 【问题描述】:

我需要获取 UITableView 中所有单元格的数组。我目前使用的方法如下:

-(NSArray *)allTableViewCellsArray

    NSMutableArray *cells = [[NSMutableArray alloc] init];

    for (NSInteger j = 0; j < [tableView numberOfSections]; ++j)
    
        for (NSInteger i = 0; i < [tableView numberOfRowsInSection:j]; ++i)
        
            [cells addObject:[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:j]]];
        
    

    return cells;

我已经取得了一些成功,但是我发现当单元格不可见时它会崩溃。那么如何获取 UITableView 中所有单元格的数组,无论它们是否可见?

【问题讨论】:

【参考方案1】:

您是否在实施中重复使用表格单元格?如果是这样,我认为您无法从 UITableView 中获取所有 UITableViewCell 对象,因为 UITableView 的单元格重用逻辑。

因此,您需要在代码中“禁用”单元格重用机制。 这可以通过不使表格视图数据源委托的cellForRowAtIndexPath 方法中的单元格出列(即不再使用dequeueReusableCellWithIdentifier 方法)并通过将nil 传递给单元格初始化方法的reuseIdentifier 属性(@ 987654324@)。

那么您的allTableViewCellsArray 方法可能会起作用! 但我认为你仍然不会有任何运气来完成这项工作。

来自[tableView cellForRowAtIndexPath:] 的 Apple 文档:

Return Value

An object representing a cell of the table or nil if the cell is not visible or indexPath is out of range.

【讨论】:

感谢您的建议,刚刚尝试过,但没有成功。我在cellForRowAtIndexPath 方法中尝试了UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil]; 好吧,我认为你不会有任何运气来完成这件事。要理解的重要一点是,不可见的单元格实际上并不存在(或者至少它们可能不存在)。您不能以某种方式从数据源中提取所需的信息吗?【参考方案2】:

找到了解决办法。而不是在我选择的任何时间点抓取所有单元格,因为它不起作用;我创建了一个包含所有单元格的数组,这样每个单元格都被迭代,这意味着我可以将它们全部添加到一个数组中。

我在willDisplayCell 方法中执行此操作。

【讨论】:

【参考方案3】:
for (UIView *view in TableView.subviews) 
    for (tableviewCell *cell in view.subviews) 
       //do
    

【讨论】:

这是有风险的,因为不是 TableView 的所有子视图都必须是 TableViewCells。 你可以使用'[cell isKindOfClass:[UITableViewCell class]]'来检查它

以上是关于获取 UITableView 中的所有单元格?的主要内容,如果未能解决你的问题,请参考以下文章

如何编写 UI 测试来测试单击 UITableView 中的第一个单元格时图像是不是存在?

如何获取 UITableView 的所有单元格?

使用 Parse 获取 UITableView 中的单元格数

使用大型数据库时,如何避免 UITableView 中的自定义单元格加载时间过长

如何使用 Swift 在 XCode UI 自动化中选择随机表格视图单元格

如何将 responseObject 放入 UITableView 中的单元格