UITableView控件是项目中使用率非常高的一个控件,下面讲解一下关于该控件刷新数据的几个常用方法
1、数据的刷新
(1)全局刷新表格,这种方法会将屏幕中显示的所有的cell全部刷新一遍,同时也会更新数组的个数
[self.tableView reloadData]; (2)刷新局部的表格 不管哪种方法,都要定义一个数组,数组里面存放《NSIndexPath》元素,用来控制需要局部刷新的是哪一个cell 下面的indexPaths数组元素表示是存放的是第0组第0行 NSArray *indexPaths = @[[NSIndexPath indexPathForRow:0 inSection:0]]; 局部刷新——“不改变”数据源个数的情况 *withRowAnimation:刷新动画的枚举,暂时设置为无动画,用户可根据需要自己设置 [self.tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone]; 局部刷新——“增加”数据源个数的情况 *withRowAnimation:刷新动画的枚举,暂时设置为无动画,用户可根据需要自己设置 [self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone]; 局部刷新——“减少”数据源个数的情况 *withRowAnimation:刷新动画的枚举,暂时设置为无动画,用户可根据需要自己设置 [self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone];
如图所示:
备注:不管是使用全局刷新还是局部刷新,必须要修改数据源中的模型!必须要修改数据源中的模型!必须要修改数据源中的模型!
不然即便执行刷新之后界面上的cell发生改变,但是在滚动表格,使当前cell复用的时候,数据依然是原来的数据!
2、左划删除功能
仅需要实现以下两个代理方法即可
#pragma mark UITableView的代理方法,实现左划删除功能
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 设置要删除的数据源 [self.courseListAttay removeObjectAtIndex:indexPath.row]; 局部刷新表格 [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];}#pragma mark 将系统默认左划弹出的按钮文字@“delete”修改为@“删除”- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath { return @"删除";}如图所示
3、cell左划出现多个按钮功能
// 调用下面方法即可实现该功能
- (NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath {
// 删除按钮(准确的说不是按钮,是“UITableViewRowAction”); UITableViewRowAction *delete = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"删除" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) { // 1、UITableViewRowAction可以通过backgroundColor属性设置不同的背景色例如delete.backgroundColor = [UIcolor redColor]; --->删除按钮的背景色就会变成红色,同时“rowrowActionWithStyle”选择为“UITableViewRowActionStyleDefault”也会默认为红色。
// 2、在此block块中执行删除的相关操作,然后在调用服务器的接口,告诉服务器将对应的数据删除 [self.dataSource removeObjectAtIndex:indexPath.row]; [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone]; }]; // 收藏按钮(准确的说不是按钮,是“UITableViewRowAction”); UITableViewRowAction *collection = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"收藏" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) { // 在此block块中执行收藏的相关操作// UITableview有一个编辑模式的功能,即editing属性,将该属性默认为NO状态,便会以动画的效果退出2个按钮的状态
self.tableView.editing = NO; }]; // 数组中元素的顺序决定显示的位置,可参照下方的示例图 return @[ delete,collection ];}
代码图:
效果图:
希望该文章能对您有所帮助~