• 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];

  • 相关阅读:
    Oracle触发器用法及介绍
    连接mysql用mysql_connect不能连接
    中标麒麟上安装配置达梦数据库7
    (转)全局变量和局部变量区别
    DSP编程与调试总结
    SERCOS总线程序相关
    C编程小结1
    C语言编程的一些小总结
    【转】#define 定义别名和 typedef 声明类型的区别
    DSP开发程序相关问题总结
  • 原文地址:https://www.cnblogs.com/guligei/p/3483468.html
Copyright © 2020-2023  润新知