如何重新加载和animation只有一个UITableView单元格/行?

我怎样才能重新加载和animation只有一个单元格/行? 现在我下载一些文件。 每次文件完成下载,我称之为完成委托,并调用[tableview重载]。 但是整个桌子重新加载。 我怎么能animation表,以便它不闪烁,例如淡入淡出效果。

问候最大

使用下面的UITableView实例方法:

 - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation 

您必须指定您要重新加载的NSIndexPathsNSArray 。 如果你只是想重新加载。 如果你只想重新加载一个单元格,那么你可以提供一个只保存一个NSIndexPathNSArray 。 例如:

 NSIndexPath* rowToReload = [NSIndexPath indexPathForRow:3 inSection:0]; NSArray* rowsToReload = [NSArray arrayWithObjects:rowToReload, nil]; [myUITableView reloadRowsAtIndexPaths:rowsToReload withRowAnimation:UITableViewRowAnimationNone]; 

你可以看到UITableViewRowAnimation枚举的animation行刷新的所有可能的方法。 如果您不想要任何animation,则可以使用值UITableViewRowAnimationNone ,如示例中所示。

重新加载特定的行比获取您想要的animation效果更具优势。 你也得到了巨大的性能提升,因为只有真正需要重新加载的单元格才能刷新,重新定位和重绘数据。 根据你的单元格的复杂性,每次刷新单元格都会有相当的开销,所以缩小刷新次数是必要的优化,你应该尽可能的使用。

如果你只需要更新tableview单元格中的文本

 UITableViewCell *cell = [_myTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]]; cell.textLabel.text = [NSString stringWithFormat:@"%i", (int)_targetMaxDistanceSlider.value]; 

苹果文件用新的语法完成它

 [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone]; 

要在指定的indexPaths重新加载tableView中的特定单元格,您需要创build一个indexPaths 数组 ,然后在tableView上调用函数reloadRowsAtIndexPaths

这是一个例子:

迅速:

 let indexPathsToReload = [indexPath1, indexPath2, indexPath3] tableView.reloadRowsAtIndexPaths(indexPathsToReload, withRowAnimation: .None) 

目标C:

 NSArray *indexPaths = @[indexPath1, indexPath2, indexPath3]; [self.tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone]; 

要么

 NSArray *indexPaths = [NSArray arraywithobject:@"indexPath1", @"indexPath2", @"indexPath3",nil]; [self.tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone];