Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 更新UITableViewCell而不重新加载_Iphone_Uitableview - Fatal编程技术网

Iphone 更新UITableViewCell而不重新加载

Iphone 更新UITableViewCell而不重新加载,iphone,uitableview,Iphone,Uitableview,我的情况如下: 我有一个UITableView,其中每个单元格都有一些按钮。 在cellForRowAtIndexPath中,我设置了行的indexpath,因此当单击a按钮时,我知道单击了哪一行。 其中一个按钮是delete(删除)按钮,按下时,我将删除支持数据并从表中删除行。 我遇到的问题是,删除一行后,其他行的indexath不正确,因为其他行没有被重新绘制。我能找到的重新绘制表格的唯一方法是调用reload,但这会弄乱动画。 我想这类问题以前一定解决过。有没有人对如何解决这个问题有什么建

我的情况如下:

我有一个UITableView,其中每个单元格都有一些按钮。
在cellForRowAtIndexPath中,我设置了行的indexpath,因此当单击a按钮时,我知道单击了哪一行。
其中一个按钮是delete(删除)按钮,按下时,我将删除支持数据并从表中删除行。

我遇到的问题是,删除一行后,其他行的indexath不正确,因为其他行没有被重新绘制。我能找到的重新绘制表格的唯一方法是调用reload,但这会弄乱动画。

我想这类问题以前一定解决过。有没有人对如何解决这个问题有什么建议?如果有更好的方法,我可以改变我设计的按钮的工作方式。

你认为需要使用这个

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
调用该方法:
-(void)deleteRowsAtIndexPaths:(NSArray*)带RowAnimation的indexPaths:(UITableViewRowAnimation)animation

最好不要用按钮存储indexPath。在按钮操作处理程序(它是单元格子类或viewController中的一种方法)中,您可以识别单元格,然后使用
-indexPathForCell:

确定indexPath,您应该能够在不完全重新加载的情况下重新绘制tableview,方法如下:

[tableView beginUpdates];
[tableView endUpdates];

我称之为方法。这会正确地删除,但不会重新绘制其他单元格,因此索引路径不正确。我尝试过使用reloadSections版本(因为大部分部分都不正确),但是这个版本的动画效果很差。整个桌子似乎都在闪烁,我可以看到桌子后面的白色。也许你也需要重新装一下周围的电池?这背后的数据是什么?如果你使用CoreData,它会为你处理很多事情。你有没有找到解决方法?重新加载行和重新加载节对我来说已经成为一个可怕的问题,因为本来应该没有的动画/闪烁。我写这个问题已经很久了,但你是对的,这就是我现在处理事情的方式。