• UITableView的代理方法


    一、UITableView的代理方法

    #pragma mark 每一行的高度

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

    #pragma mark 选中了某一行就会调用

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    #pragma mark 取消选中了某一行就会调用

    - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath

    #pragma mark 当用户提交了一个编辑操作就会调用(比如点击了“删除”按钮)

    // 只要实现了这个方法,就会默认添加滑动删除功能

    - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

    #pragma mark 当移动了某一行cell就会调用

    // 只要实现了这个方法,就会默认添加排序功能

    - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath

    二、修改Cell的状态

    1.最好通过“修改模型数据”来修改Cell的状态

    2.修改步骤

    1> 修改模型数据

    2> 刷新表格

    * 整体刷新:reloadData(最重要)

    * 局部刷新:reloadRowsAtIndexPaths:withRowAnimation:

    三、UITableView常见方法

    1.取消选中某一行(去掉cell选中时默认的蓝色背景)

    - (void)deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated;

    2.局部刷新(仅仅刷新indexPaths数组中装着的行)

    - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

    3.整体刷新(屏幕中的每一行都刷新)

    - (void)reloadData;

    4.直接删除界面上的行数(要求模型数据也要删掉对应的数量)

    - (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

    5.设置编辑模式

    @property(nonatomic,getter=isEditing) BOOL editing; 

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

    6.加载PLIST把Plist放到数组中

        // 1.加载plist,array中装的都是NSDictionary对象

        NSString *path = [[NSBundle mainBundle] pathForResource:@"shops" ofType:@"plist"];

        NSArray *array = [NSArray arrayWithContentsOfFile:path];

        // 2.将array中的字典对象转成 Shop模型对象

        _shops = [NSMutableArray array];

        for (NSDictionary *dict in array) {

            // 2.1.创建模型

    //        Shop *s = [[Shop alloc] initWithDict:dict];

            Shop *s = [Shop shopWithDict:dict];

            // 2.2.将模型对象放进数组中

            [_shops addObject:s];

        }

    // 注意:

    不管是局部刷新,还是整体刷新,原理都是:

    UITableView重新向数据源(dataSource)和代理(delegate)发送相应的消息,最终将得到的数据展示出来

  • 相关阅读:
    功能超级丰富的彩色贪吃蛇,有道具,有等级!
    【Android开发经验】LayoutInflater—— 你可能对它并不了解甚至错误使用
    数据库常见面试题总结
    数据结构——算法之(041)(寻找数组中的最大值和最小值)
    Riak VClock
    【面试虐菜】—— JAVA面试题(2)
    【面试虐菜】—— MongoDB知识整理
    【面试虐菜】—— Oracle知识整理《收获,不止Oracle》
    【面试虐菜】—— Oracle知识整理《DBA的思想天空》
    【面试虐菜】—— Oracle中CHAR、VARCHAR的区别
  • 原文地址:https://www.cnblogs.com/xgj0721/p/4343528.html
Copyright © 2020-2023  润新知