iOS UITableView reloadRowsAtIndexPaths

iOS UITableView reloadRowsAtIndexPaths,第1张

概述我有一个UITableview,懒惰加载所有不同大小的图像.当图像加载时,我需要更新特定的单元格,所以我想出我需要使用reloadRowsAtIndexPaths.但是当我使用这种方法时,它仍然为每个单元格调用heightForRowAtIndexPath方法.我认为reloadRowsAtIndexPaths的整个目的是它只会为你指定的特定行调用heightForRowAtIndexPath? 我有一个UItablevIEw,懒惰加载所有不同大小的图像.当图像加载时,我需要更新特定的单元格,所以我想出我需要使用reloadRowsAtIndexPaths.但是当我使用这种方法时,它仍然为每个单元格调用heightForRowAtIndexPath方法.我认为reloadRowsAtIndexPaths的整个目的是它只会为你指定的特定行调用heightForRowAtIndexPath?

任何想法为什么?

[self.messagetableVIEw beginUpdates];[self.messagetableVIEw reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:count inSection:0]] withRowAnimation:UItableVIEwRowAnimationNone];[self.messagetableVIEw endUpdates];

谢谢

解决方法 endUpdates触发内容大小重新计算,这需要heightForRowAtIndexPath.这就是它的工作原理

如果这是一个问题,您可以将单元格配置逻辑拉到cellForRowAtIndexPath之外,并直接重新配置单元格,而无需通过reloadRowsAtIndexPaths.这是一个基本的概述:

- (UItableVIEwCell *)tableVIEw:(UItableVIEw *)tableVIEw cellForRowAtIndexPath:(NSIndexPath *)indexPath{    Nsstring *cellID = ...;    UItableVIEwCell *cell = [tableVIEw dequeueReusableCellWithIDentifIEr:cellID];    if (!cell) {        cell = [[UItableVIEwCell alloc] initWithStyle:UItableVIEwCellStyleDefault reuseIDentifIEr:cellID];    }    [self tableVIEw:tableVIEw configureCell:cell atIndexPath:indexPath];    return cell;}- (voID)tableVIEw:(UItableVIEw *)tableVIEw configureCell:(UItableVIEwCell *)cell atIndexPath:(NSIndexPath *)indexPath{    //cell configuration logic here}

然后,无论您当前正在调用reloadRowsAtIndexPaths,您都可以这样做,而不会调用heightForRowAtIndexPath:

UItableVIEwCell *cell = [self.messagetableVIEw cellForRowAtIndexPath:indexPath];[self tableVIEw:self.messagetableVIEw configureCell:cell atIndexPath:indexPath];
总结

以上是内存溢出为你收集整理的iOS UITableView reloadRowsAtIndexPaths全部内容,希望文章能够帮你解决iOS UITableView reloadRowsAtIndexPaths所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1110672.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存