UITableVIewObjective-C iOS dev

iOS 开发技巧 - 局部刷新UITableView

2016-05-13  本文已影响4148人  devZhang

--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
};
上一篇 下一篇

猜你喜欢

热点阅读