UITableView對于iOS開發(fā)者來說一定不會陌生,很有可能你的APP很多界面都用到它瘾敢。關(guān)于UITableView的文章拍冠,想必已經(jīng)不計(jì)其數(shù)尿这,沒事可以多看看。特別是UITableView優(yōu)化的文章庆杜,非常值得仔細(xì)琢磨一番射众。
今天我們來看看如何刷新UITableView的,一般情況下欣福,刷新UITableView责球,我們會直接調(diào)用reloadData方法。
1.刷新UITableView
[self.tableView reloadData];
reloadData是刷新整個(gè)UITableView拓劝,有時(shí)候雏逾,我們可能需要局部刷新。比如:只刷新一個(gè)cell郑临、只刷新一個(gè)section等等栖博。這個(gè)時(shí)候在調(diào)用reloadData方法,雖然用戶看不出來厢洞,但是有些浪費(fèi)資源仇让。
2.刷新局部cell
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationFade];
這樣就可以很方便的刷新第一個(gè)section的第一個(gè)cell。雖然看起來代碼多了躺翻,但是確實(shí)比較節(jié)省資源丧叽。盡量少的刷新,也是UITableView的一種優(yōu)化公你。
3.局部刷新section
NSIndexSet *indexSet = [[NSIndexSet alloc] initWithIndex:0];
[self.tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationFade];
上面這段代碼是刷新第0個(gè)section踊淳。
4.左滑動刪除cell或者section(以model為例)
HistoryModel*m =_dataArray[indexPath.section];
HistoryInfoModel*tempModel = m.data[indexPath.row];
//刪除某一行
//1.更新數(shù)據(jù)
[m.dataremoveObjectAtIndex:indexPath.row];
//[myTableView reloadData];//浪費(fèi)資源
//2.局部更新UI
if(m.data.count>0) {
[myTableViewdeleteRowsAtIndexPaths:[NSArrayarrayWithObjects:indexPath,nil]withRowAnimation:UITableViewRowAnimationFade];
}else{
//這里是刪除整個(gè)section
[_dataArrayremoveObject:m];
[myTableViewdeleteSections:[NSIndexSetindexSetWithIndex:indexPath.section]withRowAnimation:UITableViewRowAnimationFade];
}
刷新動畫
刷新UITableView還有幾個(gè)動畫:
typedef NS_ENUM(NSInteger, UITableViewRowAnimation) {
UITableViewRowAnimationFade, ? //淡入淡出
UITableViewRowAnimationRight, ?//從右滑入 ? ? ? ? // slide in from right (or out to right)
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
};