zoukankan      html  css  js  c++  java
  • 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)发送相应的消息,最终将得到的数据展示出来

  • 相关阅读:
    no match for call to ‘(std::__cxx11::string {aka std::__cxx11::basic_string
    一转眼,已四年
    线程或进程绑定到特定的cpu
    微信好友信息统计-图、词云和热图
    微信聊天机器人-存储好友分享消息
    Qt之加减乘除四则运算-支持负数
    windows粘贴板操作-自己的应用和windows右键互动
    Qt之QDomDocument操作xml文件-模拟ini文件存储
    Qt之表格控件蚂蚁线
    Qt之移动硬盘热插拔监控
  • 原文地址:https://www.cnblogs.com/xgj0721/p/4343528.html
Copyright © 2011-2022 走看看