196,UITableView之cell增删移

原创 2016年01月10日 19:21:24


#import "ViewController.h"


@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>


@property (nonatomic,strong) NSMutableArray *dataList;

@property (nonatomic,strong) UITableView *tableview;


@end


@implementation ViewController


-(NSMutableArray *)dataList{

    if (_dataList == nil) {

        _dataList = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12",@"13",@"14",nil];

    }

    return _dataList;

}


-(UITableView *)tableview{

    if (_tableview == nil) {

        _tableview = [[UITableView alloc]initWithFrame:CGRectMake(0, 20, self.view.bounds.size.width, self.view.bounds.size.height - 20) style:UITableViewStylePlain];

        _tableview.dataSource = self;

        _tableview.delegate = self;

        [self.view addSubview:_tableview];

    }

    return _tableview;

}



- (void)viewDidLoad {

    [super viewDidLoad];

    [self tableview];

    

    // 开始编辑,一旦editing == YES就默认开启删除模式

    self.tableview.editing = YES;

}


//设置每一个分组的行总数

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

    return self.dataList.count;

}


//设置单元格

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    

    //设置重用ID

    static NSString *ID = @"cell";

    

    //从缓存中获取cell

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];

    

    //如果缓存中没有cell,那么,就新实例化一个

    if (cell == nil) {

        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];

    }

    

    //设置数据

    cell.textLabel.text = self.dataList[indexPath.row];

    

    return cell;

}


//只要实现了此方法,就能够支持手势拖拽删除了,删除需要自己干!

//UITableViewCellEditingStyleNone,

//UITableViewCellEditingStyleDelete, 删除

//UITableViewCellEditingStyleInsert  添加

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(nonnull NSIndexPath *)indexPath{

    

    //其实,增加和删除,只要对模型中数据进行添加或删除,再刷新界面,就可以达到效果了

    if (editingStyle == UITableViewCellEditingStyleDelete) {

        //1,从数据模型中移除数据

        [self.dataList removeObjectAtIndex:indexPath.row];

        

        //2,刷新界面

        //[self.tableview reloadData];这种刷新方法,是界面全部数据刷新,很消耗性能

        //下面这种只是局部删掉数据行而已,不会刷新数据

        [self.tableview deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationMiddle];

    }else if(editingStyle == UITableViewCellEditingStyleInsert){

        [self.dataList insertObject:@"--" atIndex:indexPath.row + 1];

         //[self.tableview reloadData];

        NSIndexPath *path = [NSIndexPath indexPathForRow:indexPath.row +1 inSection:indexPath.section];

        [self.tableview insertRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationMiddle];

    }

    

}


//返回编辑样式,如果没有实现此方法,默认都是删除。返回UITableViewCellEditingStyleInsert,就是添加了

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

    if(indexPath.row < 6){

        return  UITableViewCellEditingStyleInsert;

    }else{

        return UITableViewCellEditingStyleDelete;

    }

}


//拖动控件,只需要实现该方法

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

    //只要改变数据模型中的数据位置就可以了


    //1,从源从数组中取出

    id source = self.dataList[sourceIndexPath.row];

    

    //2,从源中删除数据

    [self.dataList removeObjectAtIndex:sourceIndexPath.row];

    

    //3,将取出的数据插入数据模型中

    [self.dataList insertObject:source atIndex:destinationIndexPath.row];

}

@end


相关文章推荐

如何修改一次代码就可以完成多种类型 cell 的 UITableView 增删修改顺序?

当一个 tableView 中的 cell 类型过多时,我们务必会在 tableView 的各个代理中做这样那样的判断,当需要增加一种 cell,或调换 cell 的顺序的时候我们就会在 tableV...

UITableView Cell操作

  • 2012年06月28日 12:22
  • 41KB
  • 下载

UITableViewCell 四种样式的具体显示效果&&获取可见UITableView 中的所有cell

UITableViewCell 得样式说明:

UITableView 删除单元格Cell Demo代码

  • 2013年05月02日 10:31
  • 70KB
  • 下载

ios uitableview cell的展开收缩功能

  • 2015年10月27日 13:31
  • 37KB
  • 下载

iOS UITableView中关于cell里的按钮被点击时如何确定是哪一个section

在section=10;row=1;的UITableView中,每一个cell都带有一个按钮,例如如下的图片一样 每一个cell中都有一个“进入店铺的按钮”,但是如果我点击相应的cell要进入对...

Xcode控件使用笔记四:UITableView-自定义Cell

UITableView其他简单设置:

iOS开发:UITableView的优化技巧-异步绘制Cell

最近在微博上看到一个很好的开源项目VVeboTableViewDemo,是关于如何优化UITableView的。加上正好最近也在优化项目中的类似朋友圈功能这块,思考了很多关于UITableView的优...

关于UITableView的Cell复用谈谈我的一些心得

UITableView是ios开发中使用率极高的一个控件,就我个人来说,几乎我做的每一个View上都有她的身影。但是很长一段时间,我对她的理解都很肤浅。对我来说触动较大的两个东西,一个是前面提到的自定...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:196,UITableView之cell增删移
举报原因:
原因补充:

(最多只允许输入30个字)