//
// 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. scrapy框架系列 (2) 一个简单案例

    学习目标 创建一个Scrapy项目 定义提取的结构化数据(Item) 编写爬取网站的 Spider 并提取出结构化数据(Item) 编写 Item Pipelines 来存储提取到的Item(即结构化 ...

  2. Eclipse系列:如何设置Eclipse关联JDK源码和文档

    一.设置Eclipse关联JDK源码 1.打开Eclipse-->Windows-->Preferences       2. 在弹出的Preferences对话框中,Java--> ...

  3. IO流 简介 总结 API 案例 MD

    目录 IO 流 简介 关闭流的正确方式 关闭流的封装方法 InputStream 转 String 的方式 转换流 InputStreamReader OutputStreamWriter 测试代码 ...

  4. Struts2环境搭建及实例解析

    与struts1框架的使用一样,struts2的环境搭建及使用同样分为以下几个步骤: 1.      引入jar包(这里以struts2.2.3为例),所需jar包有以下几个: a)        s ...

  5. SQLSERVER 免费对比数据库结构和数据的工具支持:SQL Server 2012, SQL Server 2008 and SQL Server 2005

    New xSQL Schema Compare - version 5 Compare the schemas of two SQL Server databases, review differen ...

  6. 如何在 Kaggle 首战中进入前 10%

    原文:https://dnc1994.com/2016/04/rank-10-percent-in-first-kaggle-competition/ Introduction Kaggle 是目前最 ...

  7. 让人郁闷的.net

    一个旧项目,.net 2.0的,因为一个小改动,mongo数据库加了密码,结果折腾两天却无法解决,让人郁闷的地方太多: .net版本多,用的原来的驱动是1.7的,在.net 2.0就可以,mongo服 ...

  8. 恶性循环中的永生bug,可以说是相当写实了

    恶性循环中的永生bug,可以说是相当写实了

  9. maven 管理

    http://www.cnblogs.com/qq78292959/p/3711501.html

  10. C#.NET常见问题(FAQ)-如何使用右下角托盘图标notifyIcon

    1 拖放一个NotifyIcon控件,并设置图标,还有显示的文字   2 双击这个控件,即当最小化了主窗体,然后双击这个右下角图标的时候,要显示主窗体(大部分程序的用户体验都是这样干的,比如QQ,双击 ...