iOS:删除、插入、移动单元格

删除、插入、移动单元格的具体实例如下:

 

代码如下:

  1 #import "ViewController.h"
  2 #define NUM 20
  3 typedef enum
  4 {
  5     deleteCell,
  6     addCell,
  7     moveCell,
  8 }cellState;
  9 @interface ViewController ()<UITableViewDataSource,UITableViewDelegate>
 10 @property (weak, nonatomic) IBOutlet UITableView *tableView;
 11 @property (strong,nonatomic)NSMutableArray *arrayM;
 12 @property (assign,nonatomic)cellState state; //对单元格要处理的状态
 13 @end
 14
 15 @implementation ViewController
 16 //删除单元格
 17 - (IBAction)addCellClicked:(UIBarButtonItem *)sender
 18 {
 19     self.state = addCell;
 20     self.tableView.editing = !self.tableView.editing;
 21 }
 22 //插入单元格
 23 - (IBAction)deleteCellClicked:(UIBarButtonItem *)sender
 24 {
 25     self.state = deleteCell;
 26     self.tableView.editing = !self.tableView.editing;
 27 }
 28 //移动单元格
 29 - (IBAction)moveCellClicked:(UIBarButtonItem *)sender
 30 {
 31     self.state = moveCell;
 32     self.tableView.editing = !self.tableView.editing;
 33 }
 34
 35 - (void)viewDidLoad {
 36     [super viewDidLoad];
 37
 38     //初始化
 39     self.arrayM = [NSMutableArray arrayWithCapacity:NUM];
 40     for(int i=0; i<NUM; i++)
 41     {
 42         NSString *productName = [NSString stringWithFormat:@"product-%02d",i+1];
 43         [self.arrayM addObject:productName];
 44     }
 45
 46     //设置数据源和代理
 47     self.tableView.dataSource = self;
 48     self.tableView.delegate = self;
 49 }
 50
 51 #pragma mark -tableView的方法
 52 //每一个section有多少个row
 53 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 54 {
 55     return self.arrayM.count;
 56 }
 57 //设置每一个单元格的内容
 58 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 59 {
 60     //1.根据reuseIdentifier,先到对象池中去找重用的单元格对象
 61     static NSString *reuseIdentifier = @"productCell";
 62     UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
 63     //2.如果没有找到,自己创建单元格对象
 64     if(cell == nil)
 65     {
 66         cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier];
 67     }
 68     //3.设置单元格对象的内容
 69     cell.textLabel.text = self.arrayM[indexPath.row];
 70     return cell;
 71 }
 72
 73 #pragma mark -tableView的方法
 74 //返回单元格编辑类型
 75 -(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
 76 {
 77     if(self.state == deleteCell)
 78     {
 79         return UITableViewCellEditingStyleDelete; //删除
 80     }
 81     else if(self.state == addCell)
 82     {
 83         return UITableViewCellEditingStyleInsert; //插入
 84     }
 85     else
 86     {
 87         return UITableViewCellEditingStyleNone;   //移动
 88     }
 89 }
 90 //对单元格做编辑处理
 91 -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
 92 {
 93     //取出当前的单元格
 94     UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
 95     if(cell.editingStyle == UITableViewCellEditingStyleDelete)//删除单元格
 96     {
 97         //1.删除该单元格
 98         [self.arrayM removeObjectAtIndex:indexPath.row];
 99         //2.局部刷新表格
100         [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationMiddle];
101     }
102     if(cell.editingStyle == UITableViewCellEditingStyleInsert)//插入单元格
103     {
104         //1.创建产品资源
105         NSString *product = [NSString stringWithFormat:@"product-%02d",arc4random_uniform(20)];
106
107         //2.插入该数据到当前单元格
108         [self.arrayM insertObject:product atIndex:indexPath.row];
109
110         //3.整体刷新表格
111         [self.tableView reloadData];
112     }
113 }
114 //是否可以移动
115 -(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
116 {
117     if(self.state == deleteCell || self.state == addCell)
118     {
119         return NO;
120     }
121     else
122     {
123         return YES;
124     }
125 }
126 //移动单元格
127 -(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
128 {
129     //修改数组中元素的顺序
130     //取出数组中要移动的元素
131     NSString *item = [self.arrayM objectAtIndex:sourceIndexPath.row];
132
133     //删除原来位置的元素
134     [self.arrayM removeObjectAtIndex:sourceIndexPath.row];
135
136     //在新的位置上重新插入新的元素
137     [self.arrayM insertObject:item atIndex:destinationIndexPath.row];
138 }
139 @end
时间: 2024-10-15 03:14:30

iOS:删除、插入、移动单元格的相关文章

IOS之表视图单元格删除、移动及插入

1.实现单元格的删除,实现效果如下 Cpp代码   - (void)viewDidLoad { [super viewDidLoad]; //设置导航栏 self.editButtonItem.title = @"编辑"; self.navigation.rightBarButtonItem = self.editButtonItem; [self initTableViewData]; // Do any additional setup after loading the view

Swift - 动态添加删除TableView的单元格(以及内部元件)

在Swift开发中,我们有时需要动态的添加或删除列表的单元格. 比如我们做一个消息提醒页面,默认页面只显示两个单元格.当点击第二个单元格(时间标签)时,下面会再添加一个单元格放置日期选择控件(同时新增单元格的高度也会变化).而再次点击第二个单元格,日期选择控件又会隐藏.     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

iOS 8自适应高度单元格问题

iOS 8 中通过UITableViewAutomaticDimension 常量支持自适应高度的单元格(iOS 7 就要麻烦得多).但是在实际应用中,我们需要注意以下几个问题: 1. 设置好模板单元格的自动布局 模板单元格中,subviews的自动局部必须要能够把单元格撑满.也就是说,iOS 必须能够通过内容的自动布局约束计算出 cell 的高.以下面的单元格为例: cell中有上下两个 Label,上面的Label只有一行文本(lines为1),所以高度在运行时不会改变,但下面的Label是

第二章:IOS Table表视图单元格简单介绍

单元格在Table里面也是很总要的一个部分,我们现在就来看看 1. 视图组成结构 图标.标题和副标题可以有选择地设置,扩展 视图可以内置或者自定义,其中内置的扩展视图是在枚举类型UITableViewCellAccessoryType中定义的 UITableViewCellAccessoryType 的常量枚举类型有以下几种: UITableViewCellAccessoryNone.没有扩展图标 UITableViewCellAccessoryDisclosureIndicator.扩展指示器

iOS UITableView 移除单元格选中时的高亮状态

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助.欢迎给作者捐赠.支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 在处理UITableView表格时,我们希望用户可以和触摸单元格式进行交互. 可是希望用户在完毕交互之后,这些单元格的选中状态可以消失. Cocoa Touch 提供了两种方法来防止单元格背持久选中. 1.cell.selectionStyle = UITableViewCellSelectionStyleN

修改单元格——删除、插入、移动(IOS)

插入和删除时序: client: setEditing: animated: -----> 设定进入表视图 表视图---->委托: (<UITableViewDelegate>)tableView:editingStyleForRowAtIndexPath:方法进行单元格编辑图标的设置 方法进行单元格编辑图标的设置 表视图---->数据源:(<UITableViewDataSource>)tableView:commiEditingStyle:forRowAtIn

iOS:多个单元格的删除(方法一)

采用存取indexPath的方式,来对多个选中的单元格进行删除 删除前: 删除后: 分析:如何实现删除多个单元格呢?这需要用到UITableView的代理方法,即选中单元格时对单元格做的处理,同时我们也要定义一个可变的数组,用来存储选中的数据,以便后来的删除.这里采用存储indexPath的方式,因为每选中一个单元格时,它都对应着一个indexPath,同时,将选中的单元格添加指引视图,即打对勾,也要判断打对勾是否重复,根据此来显示单元格的标记.最后,将标记的数据全部在原数据库中删除,同时在清空

c#操作Excel模板,替换命名单元格或关键字形成报表

http://blog.sina.com.cn/s/blog_45eaa01a0102vqma.html一 建立Excel 模板文件 template.xls 1.1 插入命名单元格的方法: 左上角名称框,显示当前单元格的行列号C2,加入命名后会显示其命名name 方法一: (1) 点击 单元格“姓名”之后的单元格(2) 菜单 插入--名称--定义(3) 在框中输入 name 确保底部的引用位置为 =Users!$C$2   按“添加”.“确定”按钮 即可 方法二:(1) 点击 单元格“姓名”之

使用vue自定义指令合并iview表格单元格

使用vue自定义指令合并iview表格单元格, 我们在开发过程中发现iview表格组件,官网只提供了合并表头的demo,并没有合并表格中的单元格. ivew表头分组:https://www.iviewui.com/components/table#BTFZ 效果图如下: 具体实现思路,通过vue自定义属性来操作dom,达到我们想要的效果: 代码如下: demo.vue  表格页面 <template> <div class="demo"><Table :c

JS动态生成表格后 合并单元格

JS动态生成表格后 合并单元格 最近做项目碰到表格中的单元格合并的问题,需求是这样的,首先发ajax请求 请求回来后的数据 动态生成表格数据,但是生成后如果编号或者(根据其他的内容)有相同时,要合并单元格操作,在做之前也试着google下,但是网上没有碰到这方面的需求,所以自己写了一个简单的.用文字描述需求太费劲了,如下图所示: 1. 没有合并之前的图如下: 2. 合并之后的图如下: 如上所示:是根据相邻的编号相同 进行单元格合并. 先看看实现后的效果再聊吧! JSfiddle链接地址如下: 点