zoukankan      html  css  js  c++  java
  • didEndEditingRowAtIndexPath with nil indexPath

    在UITableViewController中,通过滑动删除按钮删除一行,首先收到Table view data source call:

    tableView:commitEditingStyle:forRowAtIndexPath

    在这个调用中,需要首先删除数据,再删除界面上该行:

    NSMutableArray * mutable = [self.options mutableCopy];
    [mutable removeObjectAtIndex:indexPath.row];
    self.options = mutable;
            
    [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];

    在删除行的时候,会调用另一个Table view delegate call:

    tableView:didEndEditingRowAtIndexPath:

    indexPath参数指向的就是刚删除的cell的位置。于是我在这里做了一些其它刷新操作。

    接着,意向不到的事情发生了,UITableViewController又一次调用了Table view delegate:

    tableView:didEndEditingRowAtIndexPath:

    此时传输的indexPath参数为——nil

    我还没有在SDK中找到关于后一个调用的作用的描述,为避免重复操作,我只在这里调用了刷新操作:

    if (indexPath == nil) {
        NSTimer * timer = [NSTimer timerWithTimeInterval:.5f target:self selector:@selector(reload:) userInfo:nil repeats:NO];
        [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
    }
  • 相关阅读:
    sed 删除最后几行 和删除指定行 awk使用
    nagios监控
    nginx服务启动脚本
    Linux修改环境变量的4种方法
    源码编译apache报错的解决方法
    apache源码安装及启动脚本添加
    haproxy配置
    awk命令2
    awk命令1
    通配符及变量
  • 原文地址:https://www.cnblogs.com/tara/p/4241618.html
Copyright © 2011-2022 走看看