zoukankan      html  css  js  c++  java
  • UITableView 移动与插入,

     转:http://blog.csdn.net/smile3670/article/details/7904844

    移动关键代码

    -(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{

       returnUITableViewCellEditingStyleNone;

    }

    -(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath*)indexPath{

       returnYES;

    }

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

        NSInteger sourceRow= [sourceIndexPath row];

        NSInteger destinationRow = [destinationIndexPath row];

        id object = [[self.arrayobjectAtIndex:sourceRow]retain];

        [self.arrayremoveObjectAtIndex:sourceRow];

        [self.arrayinsertObject:objectatIndex:destinationRow];

        [object release];

    }

     

    在UITableView中插入或者删除指定的行(或者节)使用的是如下几个API:

    insertRowsAtIndexPath: withRowAnimation: 在指定位置插入行

    deleteRowsAtIndexPath: withRowAnimation: 删除指定行

    insertSections: withRowAnimation: 在指定位置插入节

    deleteSections: withRowAnimation: 删除指定节

    调用以上API之前,必须先调用beginUpdates,插入/删除数据完成后再调用endUpdates。

    -(IBAction)addRows:(id)sender{

       NSMutableArray *indexPaths = [[NSMutableArrayallocinit];

        for (int i=0; i<3; i++) {

            NSString *s = [[NSString alloc] initWithFormat:@”hello %d”,i];

            [datas addObject:s];

            NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0];

            [indexPaths addObject: indexPath];

        }

        [self.tableViewbeginUpdates];

        [self.tableViewinsertRowsAtIndexPaths:indexPathswithRowAnimation:UITableViewScrollPositionNone];

        [self.tableViewendUpdates];

    }

    -(IBAction)delRows:(id)sender{

       NSMutableArray *indexPaths = [[NSMutableArrayallocinit];

        [datas removeObjectAtIndex:0];

        [indexPathsaddObject:[NSIndexPathindexPathForRow:0inSection:0]];

        [self.tableViewbeginUpdates];

        [self.tableViewdeleteRowsAtIndexPaths:indexPathswithRowAnimation:UITableViewRowAnimationNone];

        [self.tableViewendUpdates];

    }

        //更新

        NSMutableArray *indexPaths = [[NSMutableArray allocinit];

        [datas removeObjectAtIndex:0];

        [datas insertObject:@"AAA" atIndex:0];

        [indexPaths addObject:[NSIndexPath indexPathForRow:0 inSection:0]];

        [self.tableView reloadRowsAtIndexPaths:indexPathswithRowAnimation:UITableViewRowAnimationFade];

        [indexPaths release];



    需要注意的是,调用insert函数时,需保证数据源添加的记录数要与你想插入的行的总数一致,如上面的例子中,想要插入的记录有3条,插入位置分别为1,2,3,则对应的indexpPaths数组的元素总数为3,数组元素为一个NSIndexPath对象,通过它我们指定了记录的插入位置。删除数据也是相同的道理。

    局部更新三部曲,

        [self.tableViewbeginUpdates];

        [self.tableViewinsertRowsAtIndexPaths:[NSArrayarrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];

        [self.tableViewendUpdates];

  • 相关阅读:
    【筛法求素数】Codeforces Round #426 (Div. 1) A. The Meaningless Game
    【构造】AtCoder Regular Contest 079 F
    【贪心】AtCoder Regular Contest 079 E
    【构造】AtCoder Regular Contest 079 D
    【树形dp】hdu6035 Colorful Tree
    【计算几何】【bitset】Gym
    【枚举】【高斯消元】Gym
    【矩阵乘法】Gym
    【枚举约数】Gym
    【置换群】【枚举约数】hdu6038 Function
  • 原文地址:https://www.cnblogs.com/guligei/p/3483468.html
Copyright © 2011-2022 走看看