TableViewController的添加,删除,移动
#import "RootTableViewController.h"
@interface RootTableViewController ()
{
UITableViewCellEditingStyle _style;
}
@property(nonatomic,strong)NSMutableArray *array;
@end
@implementation RootTableViewController
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
self.array=[NSMutableArray array];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
//在数组里存一些数据
for (int i=0; i<3; i++) {
NSMutableArray *tempArray=[NSMutableArray array];
for (int j=0; j<5; j++) {
[tempArray addObject:[NSString stringWithFormat:@"第%d组,第%d个人",i,j]];
}
[self.array addObject:tempArray];
}
// 设置代理
self.tableView.dataSource=self;
self.tableView.delegate=self;
//在导航栏两侧添加两个barbutton
UIBarButtonItem *bar=[[UIBarButtonItem alloc] initWithTitle:@"编辑" style:(UIBarButtonItemStyleDone) target:self action:@selector(barAction:)];
self.navigationItem.leftBarButtonItem=bar;
UIBarButtonItem *bar1=[[UIBarButtonItem alloc] initWithTitle:@"添加" style:(UIBarButtonItemStyleDone) target:self action:@selector(barAction1:)];
self.navigationItem.rightBarButtonItem=bar1;
}
//barbutton编辑事件
-(void)barAction:(UIBarButtonItem *)sender
{
_style=UITableViewCellEditingStyleDelete;
BOOL flag=self.tableView.editing;
[self.tableView setEditing:!flag animated:YES];
}
//barbutton添加事件
-(void)barAction1:(UIBarButtonItem *)sender
{
_style=UITableViewCellEditingStyleInsert;
BOOL flag=self.tableView.editing;
[self.tableView setEditing:!flag animated:YES];
}
//设置哪些行能编辑(默认全部都能)
-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
//确定编辑状态(删除|添加)
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return _style;
}
//提交编辑
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if(editingStyle==UITableViewCellEditingStyleDelete)
{
//删除
[self.array[indexPath.section]removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:(UITableViewRowAnimationLeft)];
}
else
{
//添加
NSString *s=@"测试数据";
[self.array[indexPath.section]insertObject:s atIndex:indexPath.row+1];
NSIndexPath *index=[NSIndexPath indexPathForRow:indexPath.row+1 inSection:indexPath.section];
[tableView insertRowsAtIndexPaths:@[index] withRowAnimation:(UITableViewRowAnimationRight)];
}
}
//哪些行能移动
-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
//完成移动
-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
{
//先赋值
id obj=self.array[sourceIndexPath.section][sourceIndexPath.row];
//再删除
[self.array[sourceIndexPath.section] removeObjectAtIndex:sourceIndexPath.row];
//最后添加
[self.array[destinationIndexPath.section]insertObject:obj atIndex:destinationIndexPath.section];
}
//检查越界
-(NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath
{
if(sourceIndexPath.section!=proposedDestinationIndexPath.section)
{
return sourceIndexPath;
}
else
{
return proposedDestinationIndexPath;
}
}
TableViewController的添加,删除,移动的更多相关文章
- WPF下的Richtextbox中实现表格合并,添加删除行列等功能
.Net中已有现在的方法实现这些功能,不过可能是由于未完善,未把方法公开出来.只能用反射的方法去调用它. 详细信息可以查看.Net Framework 的源代码 http://referencesou ...
- 编辑 Ext 表格(一)——— 动态添加删除行列
一.动态增删行 在 ext 表格中,动态添加行主要和表格绑定的 store 有关, 通过对 store 数据集进行添加或删除,就能实现表格行的动态添加删除. (1) 动态添加表格的行 gridS ...
- Angular-表单动态添加删除
angular本身不允许去操作DOM,在angular的角度来说,所有操作都以数据为核心,剩下的事情由angular来完成.所以说,想清楚问题的根源,解决起来也不是那么困难. 前提 那么,要做的这个添 ...
- 用Javascript动态添加删除HTML元素实例 (转载)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [CentOS]添加删除用户
摘要 在安装CentOS的时候,我们只设置了root,类似windows的超级管理员.当然我们在工作的时候,为了安全考虑,不可能对外开发root,一方面是从安全的角度,另一方面也是方便管理. 添加删除 ...
- iOS仿网易新闻栏目拖动重排添加删除效果
仿网易新闻栏目选择页面的基本效果,今天抽了点时间教大家如何实现UICollectionView拖动的效果! 其实实现起来并不复杂,这里只是基本的功能,没有实现细节上的修改,连UI都是丑丑的样子,随手画 ...
- 百度地图API示例之添加/删除工具条、比例尺控件
代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" cont ...
- Android 动态添加删除ExpandableListView的item的例子
这个例子可以学习到如下几点: 1.通过自定义Dialog(单独布局的xml文件进行弹出显示) 2.通过menu点击监听添加,删除view中的items 3.点击ExpandableListView中g ...
- jQuery添加删除元素
$(document).ready(function () { $('#radioExtranet').on('click', function () { showProjectInformation ...
随机推荐
- Activity之间的跳转
/* * 触发按钮bt1跳转到另一个Activity */ bt1.setOnClickListener(new OnClickListener() { @Override public void o ...
- ecshop各个文件夹作用
Images文件夹: 这个文件夹下有子文件夹,在这些子文件夹下面存放着当前网站商品的原始图片和缩略图.这些子文件夹命名有规律的,它们的文件名是它们目录下商品加入 的年月份.也就是说在同一个月份加入的商 ...
- [汇编语言]-第二章DEBUG
Debug查看CPU各种寄存器中得内容,内存的情况和在机器码级跟踪程序的运行. 1- 进入Debug xp 开始-运行 cmd 输入 debug 2- Debug功能 r 查看,改变CPU寄存器的内容 ...
- 【转】aiohttp 源码解析之 request 的处理过程
[转自 太阳尚远的博客:http://blog.yeqianfeng.me/2016/04/01/python-yield-expression/] 使用过 python 的 aiohttp 第三方库 ...
- Financial Management--hdu1064
Financial Management Problem Description Larry graduated this year and finally has a job. He’s makin ...
- 新建Android工程没有自动生成R.JAVA,应该先升级下ADT
前几天非常郁闷,本来计划在Android上做个小东西,结果打开Eclipse新建工程,发现居然没有R.JAVA! 反复测试很多次,均未成功,最后试着升级了下ADT,结果搞定,在这里记下,下次遇到这样的 ...
- Java Thread 总结
目 录 线程的概述(Introduction) 线程的定义(Defining) 1) 继承java.lang.Thread类 2) 实现java.lang.Runnable接口 线程的启动(St ...
- Ubuntu Mysql开通外网访问权限
Ubuntu Mysql开通外网访问权限 1.编辑 my.cnf 文件: sudo vi /etc/mysql/my.cnf 2.将绑定地址行注释掉或者修改为指定 IP #bind-addre ...
- 只有勇敢的人、鲁莽的人和绝望的人才会追求大的变革 – D.J. Anderson
只有勇敢的人.鲁莽的人和绝望的人才会追求大的变革 – D.J. Anderson http://www.cnblogs.com/lchrennew/p/Why-The-Future-Of-Agile- ...
- Easyui tree 开启拖放后 在IE下 性能惨不忍睹
项目中加载一个树结构代码如下 //加载树 function LoadTree() { var url = "../Ajax/StationTree.ashx?showVirtual=1&qu ...