如何重新加载和animation只有一个UITableView单元格/行?
我怎样才能重新加载和animation只有一个单元格/行? 现在我下载一些文件。 每次文件完成下载,我称之为完成委托,并调用[tableview重载]。 但是整个桌子重新加载。 我怎么能animation表,以便它不闪烁,例如淡入淡出效果。
问候最大
使用下面的UITableView
实例方法:
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
您必须指定您要重新加载的NSIndexPaths
的NSArray
。 如果你只是想重新加载。 如果你只想重新加载一个单元格,那么你可以提供一个只保存一个NSIndexPath
的NSArray
。 例如:
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];