//
// MJViewController.m
// UITableView-编辑模式
//
// Created by mj on 13-4-11.
// Copyright (c) 2013年 itcast. All rights reserved.
// #import "MJViewController.h" @interface MJViewController () {
// 当前的编辑模式
UITableViewCellEditingStyle _editingStyle;
}
@property (nonatomic, retain) NSMutableArray *data;
@end @implementation MJViewController
#pragma mark - 生命周期方法
- (void)viewDidLoad
{
[super viewDidLoad];
self.data = [NSMutableArray array]; for (int i = ; i<; i++) {
NSString *text = [NSString stringWithFormat:@"mj-%i", i];
[self.data addObject:text];
} // 设置tableView可不可以选中
//self.tableView.allowsSelection = NO; // 允许tableview多选
//self.tableView.allowsMultipleSelection = YES; // 编辑模式下是否可以选中
//self.tableView.allowsSelectionDuringEditing = NO; // 编辑模式下是否可以多选
//self.tableView.allowsMultipleSelectionDuringEditing = YES; // 获取被选中的所有行
// [self.tableView indexPathsForSelectedRows] // 获取当前可见的行
// [self.tableView indexPathsForVisibleRows];
} - (void)viewDidUnload {
[super viewDidUnload];
self.data = nil;
} - (void)dealloc {
[_data release];
[super dealloc];
} #pragma mark - 数据源方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.data.count;
} - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *identifier = @"UITableViewCell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier] autorelease];
cell.detailTextLabel.text = @"详细描述";
} cell.textLabel.text = [self.data objectAtIndex:indexPath.row]; return cell;
} #pragma mark - 代理方法
#pragma mark 设置Cell的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return ;
} //- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// NSLog(@"didSelectRowAtIndexPath");
//} #pragma mark 提交编辑操作时会调用这个方法(删除,添加)
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
// 删除操作
if (editingStyle == UITableViewCellEditingStyleDelete) {
// 1.删除数据
[self.data removeObjectAtIndex:indexPath.row]; // 2.更新UITableView UI界面
// [tableView reloadData];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
} else {
// 添加操作 // 1.添加数据
int row = indexPath.row + ;
[self.data insertObject:@"新添加的数据" atIndex:row]; // 2.更新UI界面
//[tableView reloadData];
NSIndexPath *path = [NSIndexPath indexPathForRow:row inSection:];
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:path] withRowAnimation:UITableViewRowAnimationAutomatic];
}
} #pragma mark 决定tableview的编辑模式
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
return _editingStyle;
}
#pragma mark 只有实现这个方法,编辑模式中才允许移动Cell
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {
// NSLog(@"from(%i)-to(%i)", sourceIndexPath.row, destinationIndexPath.row);
// 更换数据的顺序
[self.data exchangeObjectAtIndex:sourceIndexPath.row withObjectAtIndex:destinationIndexPath.row];
} #pragma mark - 公共方法
#pragma mark 删除数据
- (void)deleteData {
_editingStyle = UITableViewCellEditingStyleDelete; // 开始编辑模式
// self.tableView.editing = YES;
// [self.tableView setEditing:YES]; BOOL isEditing = self.tableView.isEditing;
// 开启\关闭编辑模式
[self.tableView setEditing:!isEditing animated:YES];
} #pragma mark 添加数据
- (void)addData {
_editingStyle = UITableViewCellEditingStyleInsert; BOOL isEditing = self.tableView.isEditing;
// 开启\关闭编辑模式
[self.tableView setEditing:!isEditing animated:YES];
}
@end

ios中tableview的移动添加删除的更多相关文章

  1. iOS中TableView小技巧

    摘要: TableView是ios开发中经经常使用到的控件,这里统一记录一下开发中遇到的经常使用小技巧,不断探索更新.也希望大家能够告诉我很多其它经常使用的小技巧啦~一起进步 1.去除多余的列表线条 ...

  2. JS中的数组,添加删除元素,判断是否存在一个值的方法总结

    一.添加元素: 1:在最后添加,返回数组长度:arr.push(...); 2:在最前面添加,返回数组长度:arr.unshift(...); 3:在指定位置添加,没有返回值:arr[i] = xxx ...

  3. iOS 中 CAShapeLayer 的使用( 等待删除的博文)

    等待删除. 1.CAShapeLayer 简介 1.CAShapeLayer继承至CALayer,可以使用CALayer的所有属性值 2.CAShapeLayer需要与贝塞尔曲线配合使用才有意义 3. ...

  4. IOS中TableView的用法

    一.UITableView 1.数据展示的条件 1> UITableView的所有数据都是由数据源(dataSource)提供的,所以要想在UITableView展示数据,必须设置UITable ...

  5. File类中的一些属性 添加删除文件夹

    import java.io.File; import java.io.IOException; public class FileD { public static void main(String ...

  6. ios中tableview网封装(viewcontroller封装)常用的

    下载地址 http://pan.baidu.com/share/link?shareid=3657500168&uk=923776187 使用框架 1:asIHttpRequest库 2;SB ...

  7. Mac OS X中Launchpad的图标添加删除方法(添加方法别试了,和Linux很大区别)

    说明:在Mac下的Launchpad图标添加和删除都与应用程序的app文件有关,如果单纯的只想在Launchpad添加自定义的图标,然后指定要某条命令运行时,建议不要这么干,Launchpad的图标管 ...

  8. IOS中tableView每组的头部控件、通过tableView的代理方法控制某一行的cell能否达到高亮选中状态

    一.tableView每组的头部控件 1.控件宽度默认就是tableView的宽度 2.控件高度由下面的代理方法决定 - (CGFloat)tableView:(UITableView *)table ...

  9. IOS中TableView的使用(1) -创建一个简单的tableView

    创建一个简单的tableView: #import <UIKit/UIKit.h> /*tableView 一定要遵守这两个协议: UITableViewDataSource,UITabl ...

随机推荐

  1. Logistic Regression总结

    转自:http://blog.csdn.net/dongtingzhizi/article/details/15962797 Logistic回归总结 作者:洞庭之子 微博:洞庭之子-Bing (20 ...

  2. 文本框只能输入数字(兼容IE火狐)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. Android -- onMeasure

    onMeasure调用次数 当Activity获取焦点的时候,它就需要绘制布局.Android框架会处理绘制过程,但这个Activity必须提供它布局树的根节点. 绘制过程是从布局的根节点开始的.这个 ...

  4. kaggle-Corporación Favorita Grocery Sales Forecasting

    https://blog.csdn.net/bitcs_zt/article/details/79256688 该项比赛1月15日就已经结赛了,但由于之后进入期末,备考花费了大量的时间,没来得及整理相 ...

  5. neo4j的配置文件(图文详解)

    不多说,直接上干货! 前期博客 Ubuntu16.04下Neo4j图数据库官网安装部署步骤(图文详解)(博主推荐) Ubuntu14.04下Neo4j图数据库官网安装部署步骤(图文详解)(博主推荐) ...

  6. Java:Linux上java -jar xxx.jar&java -cp 区别

    java -cp java -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库和jar包,需要全路径到jar包,多个jar包之间连接符:window上分号“;”.Lin ...

  7. IIS 7.5: HOW TO ENABLE TLS 1.1 AND TLS 1.2

    In IIS 7.5, which is installed on Windows 2008 R2 servers, only SSL 3.0 and TLS 1.0 are enabled for ...

  8. 【Nodejs】外研社小学英语教材一年级起各年级英语音频下载(全)

    两个爬虫合作成的,放在这里分享给有需要的人. 下载地址:https://pan.baidu.com/s/19hJ59SsX9uTfFtBxaRxJ8A 2018年5月10日

  9. OpenWRT使用wifidog实现强制认证的WIFI热点

    首先安装wifidog到OpenWRT的路由器: opkg update opkg install wifidog wifidog依赖下面这些模块: iptables-mod-extra iptabl ...

  10. javascript常用的公共方法

    附件下载 //摘要:将指定字符串中的格式项替换为指定数组中相应对象的字符串表示形式. //参数:复合格式字符串. //返回结果:format的副本,其中的格式项已替换为 args 中相应对象的字符串表 ...