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


如何在UITableView里动态添加 cell

在项目开发时常常会遇到点击cell的时候,在这个cell的下面重新出现一个新的cell,之前的cell都往下移动,再次点击原来的cell,页面又会回到原来的样子,那么这个动态创建cell的效果是如何实...
  • MoRenYaoJing
  • MoRenYaoJing
  • 2016年04月27日 22:24
  • 2543

几种UITableview自定义Cell的办法

UITableview注册cell(registerNib / registerClass)
  • feng2qing
  • feng2qing
  • 2016年05月14日 17:37
  • 6183

UI08_UItableView(关于cell滑动条消失,隐藏cell线,解决cell的线不对应问题)

初始化设置(需要我们输入相关的内容时我们是需要设置)-(instancetype)initWithNibName:(NSString *)nibNameOrNilboudle:(NSBundle *)...
  • xiaotangguofeifei
  • xiaotangguofeifei
  • 2015年08月08日 15:44
  • 1254

UITableView移动cell位置(附在不同section之间切换的拓展)

UITableView在iOS开发中用处很广,当然其用法也是有些复杂的,特别是在设计UITableViewCell的时候,使用和处理cell是一个不小的挑战,对于cell位置的移动我们可以使用- (v...
  • abc649395594
  • abc649395594
  • 2015年03月18日 21:34
  • 3170

自定义UITableViewCell的两种方式

创建cell比较简单,但是有几个细节点我想说出来,和大家分享一下。使用纯代码创建,先是创建一个cell名字为customCell,继承于UITableViewCell.记着创建的时候不勾选使用XIB这...
  • baidu_31683691
  • baidu_31683691
  • 2016年04月20日 11:47
  • 3116

UITableView 加载cell 的几种常用方式

开发的过程中,由于经常用到tableview,加载cell,也经常忘记所有,记录下经常用的几种方式 1 代码加载cell -(UITableViewCell*)tableView:(UITableV...
  • songbai1211
  • songbai1211
  • 2016年11月08日 21:49
  • 720

iOS开发之高级视图—— UITableView操作——删除

删除操作步骤:          1:先设置UITableView代理                //设置UITableViewDelegate 代理                tabl...
  • panjican
  • panjican
  • 2016年05月25日 20:49
  • 1598

UITableviewCell使用以及自定义高度

UITableView号称是 ios里面最难使用也是最复杂的一个控件? 是不是暂且不说,反正我觉得HttpRequest也是挺复杂的。 但确实被UItableview折磨了一段时间,还好搞...
  • j_akill
  • j_akill
  • 2015年02月28日 23:22
  • 12144

UITableView出现上移/下移64的问题 解析

很多人在开发中会遇到, 在一个带navigation的ViewController上添加tableView 会出现 一些上移/下移64的:然后打印tableView的frame 发现 没问题啊, 和屏...
  • zhz459880251
  • zhz459880251
  • 2015年10月28日 16:27
  • 11687

uitableviewcell 重用机制 和 当绘图重叠时的解决办法

TableView的重用机制,为了做到显示和数据分离,IOS tableView的实现并且不是为每个数据项创建一个tableCell。而是只创建屏幕可显示最大个数的cell,然后重复使用这些cell,...
  • jimy86022
  • jimy86022
  • 2014年03月20日 17:14
  • 672
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:196,UITableView之cell增删移
举报原因:
原因补充:

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