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


用InstallShield制作数据库应用系统的安装程序(2000年8月17日) 作者:新疆 宗宏斌

  Delphi具有强大的数据库应用程序开发功能,其Client/Sever版本可以开发一般的单机数据库应用系统、普通Client/Sever应用系统直至基于Web的多层应用,其中自然离不开Borla...
  • ghj1976
  • ghj1976
  • 2000-09-14 14:52:00
  • 2592

UITableView Cell操作

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

UITableView 删除单元格Cell Demo代码

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

UITableViewCell的操作(增加cell,删除cell,插入cell)

插入一个cell。也可插入多个 *** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /BuildRoot/L...
  • CornerAndCorner
  • CornerAndCorner
  • 2016-06-23 19:00:49
  • 1685

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

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

UITableView的点击删除或者插入一条Cell

最近在实现UITableView的编辑cell功能时,发现有些淡忘这一块东西了.所以,姑且写一篇博客复习一下这块的知识吧.本文主要拿删除cell来讲,插入其实一模一样,就不单独说了.    删除cel...
  • zuoyou1314
  • zuoyou1314
  • 2015-04-06 14:53:12
  • 4950

UITableView 滚动到指定行cell

1.滚动到指定的cell 设置需要滚动到的cell的NSIndexPath[NSIndexPath indexPathForRow: inSection:] 滚动到指定cell [self.ta...
  • u011980994
  • u011980994
  • 2015-11-15 00:33:43
  • 6112

UITableView cell 点击没反应 但却设置了delegate

UIView添加UITapGestureRecognizer和UITableView点击冲突
  • zhengxf_2012
  • zhengxf_2012
  • 2014-04-27 00:22:23
  • 1162

在 UITableView的底部插入新的cell

// 添加cell到tableView中     NSIndexPath * newIndexPath = [NSIndexPath indexPathForRow:self.historyA...
  • feihu13579
  • feihu13579
  • 2017-06-21 22:11:03
  • 343

UITableView

  • 2015年05月19日 11:53
  • 22KB
  • 下载
收藏助手
不良信息举报
您举报文章:196,UITableView之cell增删移
举报原因:
原因补充:

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