zoukankan      html  css  js  c++  java
  • 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!两个都要更新!

  • 相关阅读:
    一些鲜为人知的编程真相
    一些鲜为人知的编程真相
    Ruby 1.9不会杀死Python
    Boost.Asio和ACE之间关于Socket编程的比较
    Effective C++第17条:要在单独的语句中使用智能指针来存储由new创建的对象
    Ruby 1.9不会杀死Python
    Boost智能指针——weak_ptr
    对象生死劫 - 构造函数和析构函数的异常
    Protocol Buffers:Google 的数据交换格式
    根据出生日期计算年龄
  • 原文地址:https://www.cnblogs.com/hereiam/p/3856188.html
Copyright © 2011-2022 走看看