--UITableView想必大家对它都不感觉陌生,估计你的很多APP的页面都有用到它。网络上关于UITableView的文章也不胜其数了,很多也是建议大家多看看的,比如UITableView优化类的。
-- 今天我们聊的是关于UITableView刷新的问题。当然,你第一感觉想到的刷新肯定是用 reloadData 这个方法
刷新UITableView
[self.tableView reloadData];
reloadData这个方法会刷新整个UITableView,可是有时候我们只需要刷新其中一个cell,或者一个section。这个时候再去调用reloadData 这个方法,虽然用户看不出来,但是着实有些浪费资源。这个时候,我们就需要使用局部刷新方法了。
刷新局部cell
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationFade];
这样就是局部的刷新了第一个section的第一个cell, 虽然代码看起来多了一点,但确实还是毕竟节省资源的。这也算是对UITableView的一个优化。
刷新局部section
NSIndexSet *indexSet = [[NSIndexSet alloc] initWithIndex:0];
[self.tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationFade];
很显然,这段代码就是单独刷新第一个section
关于刷新动画
刷新动画还有其他几个动画可以使用
typedef NS_ENUM(NSInteger, UITableViewRowAnimation) {
UITableViewRowAnimationFade, //淡入淡出
UITableViewRowAnimationRight, //从右滑入
UITableViewRowAnimationLeft, //从左滑入
UITableViewRowAnimationTop, //从上滑入
UITableViewRowAnimationBottom, //从下滑入
UITableViewRowAnimationNone, // available in iOS 3.0
UITableViewRowAnimationMiddle, // available in iOS 3.2. attempts to keep cell centered in the space it will/did occupy
UITableViewRowAnimationAutomatic = 100 // available in iOS 5.0. chooses an appropriate animation style for you
};