1,刷新方法
1.1刷新某个section中的row
[UIView performWithoutAnimation:^{
[m_tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:1]] withRowAnimation:UITableViewRowAnimationNone];
}]. //这个动画可以解决刷新闪动的问题
1.2刷新某个section中的row(同样适用于只有一个section的情况)
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[m_tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
1.3刷新某个section
1.3.1
NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:2];
[m_tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic];
1.3.2
[m_tableView reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationNone];
2,刷新后滚到指定位置
[m_tableView reloadData];
NSIndexPath * dayOne = [NSIndexPath indexPathForRow:0 inSection:2];
[m_tableView scrollToRowAtIndexPath:dayOne atScrollPosition:UITableViewScrollPositionTop animated:YES];
3,刷新后防止滚动的方法
m_tableView.estimatedRowHeight = 0;
m_tableView.estimatedSectionHeaderHeight = 0;
m_tableView.estimatedSectionFooterHeight = 0;
2,UITableView cell复用
UITableViewCell的重用
原理:假如屏幕最多能显示10条数据,当第一次启动程序,这10个内存地址一次分配完成,然后我们向下滚动TableView,当第一行cell超出屏幕范围不可见后,这个cell所占的地址就可以被重用。
UITableView内部维护了一个重用cell的队列,使用以下方法,我们可以在该队列中取出可重用的cell。但是只有当队列中有数据时这个方法才返回UITableViewCell的实例,否则返回nil. ***因此要确保cell被成功初始化。
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier_cell];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier_cell];
}