zoukankan      html  css  js  c++  java
  • 与TableView插入、删除、移动、多选,刷新控件

    一、插入、删除、移动、多选

    方法一:

    Cell的插入、删除、移动都有一个通用的方法,就是更新tableView的数据源,再reloadData,这样做实现上是简单一点,但是reloadData是刷新整个tableView,消耗性能。

    方法二:

    针对指定的位置进行插入、删除、移动

    步骤:

    1.让tableView进入编辑状态:

      - (void)setEditing:(BOOL)editing animated:(BOOL)animated

    2.tableView会执行代理返回编辑的种类:

      - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath

      插入:UITableViewCellEditingStyleInsert,左侧出现红色删除按钮

      删除:UITableViewCellEditingStyleDelete,左侧出现绿色添加按钮

      移动:UITableViewCellEditingStyleNone,右侧出现灰色移动按钮

      多选:UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert,左侧出现圆形选择框

    3.在插入、删除、多选的时候右侧的移动按钮也会出现,这是因为tableView的代理- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath默认返回YES,所以默认编辑的时候可以移动,不需要的设置成NO就行了

    4.执行tableView实现插入、删除、移动、多选

      插入:- (void)insertRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

      删除:- (void)deleteRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

      移动:不需要实现方法,移动后会执行回调- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath

      多选:不需要什么实现方法,cell的selectionStyle不能为UITableViewCellSelectionStyleNone不然没有多选效果,选中的一个cell的时候会执行代理- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(nonnull NSIndexPath *)indexPath ,取消选中一个cell的时候执行回调:- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath

     

    二、系统刷新控件

    在TableViewController中可以使用系统的刷新控件UIRefreshControl

    使用方法:

    1.创建UIRefreshControl

      //初始化

      UIRefreshControl *rc = [[UIRefreshControl alloc] init];

      //设置Title

      rc.attributedTitle = [[NSAttributedString alloc] initWithString:@"下拉刷新"];

      //响应方法

      [rc addTarget:self action:@selector(refresh) forControlEvents:UIControlEventValueChanged];

      //赋给TableViewController

          self.refreshControl = rc;

     

    - (void)refresh{

      //控件状态,是否在刷新状态

            if (self.refreshControl.isRefreshing) {

                    self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"加载中"];

        }

    }

      

     

     

  • 相关阅读:
    jQuery.fly插件实现添加购物车抛物线效果
    jQuery 实现前端模糊匹配与首字母搜索
    Java生成微信二维码及logo二维码
    Map 与 JavaBean 的相互装换
    从零写Java Web框架——请求的处理DispatcherServlet
    从零写Java Web框架——实现Ioc依赖注入
    记一次校招面试
    使用DbUtils对JDBC封装实现面向实体查询
    HTTP Status 500 PWC6188 jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
    【插件】百度编译器ueditor插入视频的时候。在预览的窗口提示 “输入的视频地址有误,请检查后再试!
  • 原文地址:https://www.cnblogs.com/small-octopus/p/4886543.html
Copyright © 2011-2022 走看看