gpt4 book ai didi

iphone - 重新排列时 UITableView 单元格刷新问题

转载 作者:太空狗 更新时间:2023-10-30 03:51:42 25 4
gpt4 key购买 nike

在这里提供一些帮助将不胜感激!

我有一个自定义的 UITableView 单元格,由一个图像(绿色、橙色或红色)和两个不同字体大小的标签组成。 UITableView 由对象的 NSMutableArray 驱动。

UITableView 被分成三个部分,第一部分包含带有红色图像的所有单元格,第二部分包含橙色图像,第三部分包含绿色图像。

我已经实现了在 UITableView 中重新排列单元格的功能,允许用户将带有红色图像的项目从红色部分拖动到橙色部分。这种拖动效果很好,并且底层数据已正确更新。我知道是这种情况,因为如果我选择该单元格,我会转到其详细信息 View 并更新数据。

但是,在我进入详细信息(或退出应用程序)并返回之前,UITableView 不会更新!如果我将有问题的单元格滚动出 View 并再次返回 View ,它也会更新,因此数组显然包含正确的数据。我就是无法触发 View 刷新!

在更改 moveRowAtIndexPath 中的基础数据的代码之后,我尝试了以下操作:

[self.tableView reloadData];

但是这会导致异常。 Apple Language Reference 实际上说在插入、删除或设置动画时不能调用 reloadData,这当然是我正在做的。此外,尝试使用

刷新单元格
[self setNeedsDisplay];

不起作用(尽管它也不会崩溃)。

关于如何刷新 UITableView 有什么想法吗?我找不到 afterMoveHasBeenCompleted: 方法或任何东西,所以如果我不能在我的 moveRowAtIndexPath: 方法期间调用 reloadData 那么我应该在哪里调用它?!

最佳答案

知道了!!

我发现解决方案是在刷新代码中加入延迟,以防止崩溃。

我将 reloadData 调用放入一个单独的方法中:

- (void)refreshDisplay:(UITableView *)tableView {
[tableView reloadData]; }

然后延迟 0.5 秒调用它:

[self performSelector:(@selector(refreshDisplay:)) withObject:(tableView) afterDelay:0.5];

它没有崩溃,而是刷新了! 0.5 秒的延迟几乎无法察觉,但完全可以接受。

希望这对其他人有帮助!

谢谢

菲尔

关于iphone - 重新排列时 UITableView 单元格刷新问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/840011/

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