gpt4 book ai didi

iphone - 同时加载行和整个表时崩溃

转载 作者:行者123 更新时间:2023-12-03 17:42:03 24 4
gpt4 key购买 nike

我在这里有一个不错的错误,尤其是在速度较慢的设备中。
我有一个UITableView容器,类似于App Store应用程序中的容器,底部有一个“加载更多”按钮。
当按下它时,我从服务器加载新信息,设置阵列,然后重新加载表 View 。在该信息中,还包含表行中显示的每个对象的图像的URL,因此,当我们获得它时,便开始下载该图像。加载图像后,我将重新加载对象的行。

[self.searchResultsTableView reloadRowsAtIndexPaths: [NSArray arrayWithObject: path] withRowAnimation: UITableViewRowAnimationNone];

当由于正在下载镜像而正在重新加载行时,问题就来了,整个表都在这样做,这是因为用户按下了“加载更多”按钮并获得了更多信息。然后我得到这个错误:
Invalid update: invalid number of rows in section 0.  The number of rows contained in an existing section after the update (140) must be equal to the number of rows contained in that section before the update (125), plus or minus the number of rows inserted or deleted from that section (1 inserted, 1 deleted).

这是完全不稳定的,在更新新图像行时放大了表格。
我的问题是:如何锁定它,以便在重新加载整个表之前不重新加载该行?像table.isReloading这样的东西会很好。我尝试使用 bool(boolean) 锁,并在主线程中同时执行了两个操作,但是它不起作用...
非常感谢。

最佳答案

好吧,对文档的一些研究为所有这些提供了更多的启示。

reloadRowsAtIndexPaths:withRowAnimation: Call this method if you want to alert the user that the value of a cell is changing. If, however, notifying the user is not important—that is, you just want to change the value that a cell is displaying—you can get the cell for a particular row and set its new value.



这就是我所做的,我得到了单元格并为图像设置了新值,而不是重新加载整个图像。我想它也更有效:
AHMyTableViewCell *cell = (AHMyTableViewCell *) [self.myTableView cellForRowAtIndexPath:path];

if ((cell != nil) && ([cell isKindOfClass:[AHMyTableViewCell class]]))
cell.myImageView.image = image;

现在不会崩溃。

关于iphone - 同时加载行和整个表时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7177686/

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