gpt4 book ai didi

iphone - 删除tableview中的单元格,单元格也可以重用,为什么呢?

转载 作者:行者123 更新时间:2023-12-01 17:45:51 26 4
gpt4 key购买 nike

起初,我删除了tableView中的一个单元格,然后我想在tableView中添加另一个新单元格,但是新单元格不是新的,它只是我删除的单元格。我知道 dequeueReusableCellWithIdentifier 是什么意思。我认为当删除一个单元格时,dequeueReusableCellWithIdentifier 中的缓存也会被删除。为什么不呢?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"table reload");

PDFModel* tempmodel=[PDFArray objectAtIndex:indexPath.row];
NSString * CellIdentifier=tempmodel.PDFName;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSLog(@"cell %x",cell);
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
//custom the cell
cell.text=...
}
return cell;
}

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle==UITableViewCellEditingStyleDelete)
{
[PDFArray removeObjectAtIndex:indexPath.row];
NSMutableArray* array=[[NSMutableArray alloc] init];
[array addObject:indexPath];
[self.tableView deleteRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationRight];

}
}

最佳答案

没有理由删除 UITableViewCell,因为它可以重复使用。该单元格在cellForRowAtIndexPath 再次处理之前不会显示。 ,所以它不会与旧数据一起显示。不过,布局单元格—— View 及其所有 subview ——可以在新数据替换旧数据后重用。

把它想象成每个单元格都是一 block 白板(干擦板),它被切割成一定的大小,所有的基本信息区域都 eclipse 刻在表面上:一些文本的地方,数字的另一个区域,一个特殊的空间用于绘制图片等。在 tableView:cellForRowAtIndexPath:当您检查 cell == nil 是否,您正在尝试找出是否有任何可用的已 eclipse 刻白板,您可以使用干擦记号笔删除和写入新信息。如果没有,那么它会切割并 eclipse 刻一个全新的板来写入信息,但如果有一个可以删除的,那么它只是用橡皮擦擦掉旧信息并写入新信息。可以想象,这可以节省大量时间。

当用户滚动表格时,实际发生的情况是,当一个单元格(白板)从顶部滚动并且不再可见时,系统会删除数据并将其移至堆栈底部;它将是下一个滚动到 View 中的。因此,系统只需要在任何时候创建尽可能多的白板——屏幕外的白板实际上并不存在。

当您删除一个单元格时,您真正要做的就是告诉表格 (a) 停止显示该单元格,并 (b) 设置一个标志,以便表格可以使用橡皮擦擦掉旧数据,但仍然可以重复使用白板。

就计算能力而言,创建单元可能非常昂贵。如果 UITableView 必须在用户滚动时每次进入 View 时都创建一个新单元格——以此类推,如果每次进入 View 时它必须剪下一个新的白板并在其中 eclipse 刻所有区域—— - 滚动会非常生涩,看起来很糟糕。通过重用单元格,只替换变化的内容,表格可以在用户与之交互时平滑移动。

关于iphone - 删除tableview中的单元格,单元格也可以重用,为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5634219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com