0

因此,我一直在为我的 iOS 应用程序实施自动化测试,但遇到了一个奇怪的问题。

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

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

4

2 回答 2

3

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

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

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

另一种选择。如果UITableViewController当前不可见,则调用didReceiveMemoryWarning方法会释放其所有UITableViewCells。

于 2012-10-16T00:06:04.380 回答
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];
} 
于 2012-10-16T06:19:10.170 回答