• UITableView中Cell和section的插入与删除


    插入段:

    - (void)insertSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation;

    - (void)deleteSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation;

    插入行:

    - (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;

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

    如果在编辑模式下,复写此方法:

     1 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
     2 {
     3     if (editingStyle == UITableViewCellEditingStyleDelete) {
     4         // Delete the row from the data source
     5         if (indexPath.row == 0) {
     6             [self.modeInfomation removeObjectAtIndex:indexPath.section];
     7             [self.modeNameArr removeObjectAtIndex:indexPath.section];
     8             NSIndexSet *sectionIndex = [NSIndexSet indexSetWithIndex:indexPath.section];
     9             [self.tableView deleteSections:sectionIndex withRowAnimation:UITableViewRowAnimationLeft];
    10         }
    11         else {
    12             [[self.modeInfomation objectAtIndex:indexPath.section] removeObjectAtIndex:indexPath.row];
    13             [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
    14         }
    15     }   
    16     else if (editingStyle == UITableViewCellEditingStyleInsert) {
    17         // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    18     }   
    19 }

    在普通模式下:

    1 [self.tableView beginUpdates];
    2     [[self.modeInfomation objectAtIndex:tag] addObject:@"hehe"];
    3     NSIndexPath *indexpath = [NSIndexPath indexPathForRow:row + 1 inSection:tag];
    4     [self.tableView insertRowsAtIndexPaths:@[indexpath] withRowAnimation:UITableViewRowAnimationRight];
    5     [self.tableView endUpdates];

    注意:

    插入或者删除行或段,先更新datasource,再insertRows或insertSections!两个都要更新!

  • 相关阅读:
    C 栈和堆的区别
    ubuntu 12.10 禁用触摸板
    完美解决 linux sublime 中文无法输入
    gdb 断点调试C程序
    归并排序
    算法效率表示
    sublime -text 删除已安装插件
    MSSQL数据库表索引碎片整理优化性能
    Rdlc报表出现空白页解决方法
    RDLC报表:每页显示N条记录
  • 原文地址:https://www.cnblogs.com/hereiam/p/3856188.html
Copyright © 2020-2023  润新知