如何清除缓存的UITableViewCells

时间:2012-10-15 23:29:27

标签: iphone ios uitableview

所以,我一直在为我的iOS应用程序实现自动化测试,我遇到了一个奇怪的问题。

使用我正在使用的测试框架(Frank),它尝试根据辅助功能标签触摸视图/按钮/所有内容。除了UITableViews之外,这很有效,因为它们如何缓存和重用UITableViewCells。如果我从表中“删除”一个单元格,表格缓存系统会将单元格翻转为隐藏。但它仍然会在那里等待重用,我的框架仍然可以看到它,这会导致问题。

所以,问题:如何强制UITableView释放所有已删除/缓存的单元格,使它们不再是View层次结构的一部分?

2 个答案:

答案 0 :(得分:3)

这个技巧可能会有所帮助:

while([tableView dequeueReusableCellWithIdentifier:cellId]!=nil);

当然,它需要为每个可能的cellId手动重复它 请注意,缓存的单元格不是视图层次结构的一部分。

还有一个选择。如果当前未显示UITableViewController,则didReceiveMemoryWarning方法的调用将释放其所有UITableViewCell

答案 1 :(得分:0)

在方法- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath中,使用:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]`

然后检查你的细胞是否为零。如果是,则分配一个新的单元实例。

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    [cell setDelegate:self];
}