博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 关于UITabVIew刷新的几种方法(针对初学者)
阅读量:5065 次
发布时间:2019-06-12

本文共 2819 字,大约阅读时间需要 9 分钟。

 

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
             ];
}

 

代码图:

 

效果图:

 

 

希望该文章能对您有所帮助~

转载于:https://www.cnblogs.com/siwenss/p/6023275.html

你可能感兴趣的文章
蓝桥杯-分小组-java
查看>>
Android Toast
查看>>
iOS开发UI篇—Quartz2D使用(绘制基本图形)
查看>>
docker固定IP地址重启不变
查看>>
桌面图标修复||桌面图标不正常
查看>>
JavaScript基础(四)关于对象及JSON
查看>>
JAVA面试常见问题之Redis篇
查看>>
jdk1.8 api 下载
查看>>
getElement的几中属性介绍
查看>>
HTML列表,表格与媒体元素
查看>>
雨林木风 GHOST_XP SP3 快速装机版YN12.08
查看>>
java对象的深浅克隆
查看>>
数据结构3——浅谈zkw线段树
查看>>
Introduction to my galaxy engine 2: Depth of field
查看>>
Python 3.X 练习集100题 05
查看>>
设计器 和后台代码的转换 快捷键
查看>>
Monkey测试结果分析
查看>>
STL——配接器、常用算法使用
查看>>
STL容器之vector
查看>>
无法向会话状态服务器发出会话状态请求
查看>>