参考:  http://www.open-open.com/lib/view/open1430008922468.html

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

self.dataArray = [NSMutableArray arrayWithArray: @[@"1",@"2",@"3",@"4",@"5",@"6",@"7"]];

[self createView];

self.view.backgroundColor = [UIColor greenColor];

}

-(void)createView{

self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

self.tableView.delegate = self;

self.tableView.dataSource = self;

[self.view addSubview:self.tableView];

[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"ce"];

//    self.tableView.bounces = 0;

//    self.tableView.showsVerticalScrollIndicator = 0;

self.tableView.tableFooterView = [[UIView alloc]init];//没有的不展示 line

UIBarButtonItem *deleteBar = [[UIBarButtonItem alloc]initWithTitle:@"删除" style: UIBarButtonItemStylePlain target:self action:@selector(deleteBtn)];

self.navigationItem.rightBarButtonItem = deleteBar;

UIBarButtonItem *addBar1 = [[UIBarButtonItem alloc]initWithTitle:@"添加1  " style: UIBarButtonItemStylePlain target:self action:@selector(addBtn)];

UIBarButtonItem *addBar2 = [[UIBarButtonItem alloc]initWithTitle:@"  添加2(模式)" style: UIBarButtonItemStylePlain target:self action:@selector(addBtn2)];

self.navigationItem.leftBarButtonItems = @[addBar1,addBar2];

}

//删除(进入编辑模式)

- (void)deleteBtn{

self.isAdd = NO;

static int flog = 1;

flog ^= 1;

if (flog) {

[self.tableView setEditing:YES animated:YES];

}else{

[self.tableView setEditing:NO animated:YES];

}

}

//增加1

- (void)addBtn{

[self.dataArray addObject:@"新增一条"];

//在 <指定行> 添加

NSIndexPath * indexPath = [NSIndexPath indexPathForRow:self.dataArray.count - 1 inSection:0];

[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationRight];

}

- (void)addBtn2{

self.isAdd = YES;

static int flog = 1;

flog ^= 1;

if (flog) {

[self.tableView setEditing:YES animated:YES];

}else{

[self.tableView setEditing:NO animated:YES];

}

}

#pragma mark --dataSource

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{

return 1;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

return self.dataArray.count;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ce"];

cell.textLabel.text = self.dataArray[indexPath.row];

return cell;

}

#pragma mark -- delegate 编辑模式(增加/删除/移动)

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{

return YES;

}

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath{

return YES;

}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{

if (self.isAdd) {

return UITableViewCellEditingStyleInsert; //添加

}else{

return UITableViewCellEditingStyleDelete;   //删除

}

}

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{

NSInteger sourceRow = indexPath.row;

//删除

if (editingStyle == UITableViewCellEditingStyleDelete) {

[self.dataArray removeObjectAtIndex:sourceRow];

[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationLeft];

}

//添加(点击+号按钮)

else if (editingStyle == UITableViewCellEditingStyleInsert){

[self.dataArray insertObject:@"新增" atIndex: sourceRow+1];

//在指定位置插入

NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:sourceRow+1 inSection:indexPath.section];

[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObjects:newIndexPath, nil] withRowAnimation:UITableViewRowAnimationRight];

}

}

//移动(只有写了这个方法才能移动,但此时不能左滑)

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{

NSInteger sourceRow = sourceIndexPath.row;

NSInteger destinRow = destinationIndexPath.row;

NSString *moveObject = [self.dataArray objectAtIndex:sourceRow];

[self.dataArray removeObjectAtIndex:sourceRow];

[self.dataArray insertObject:moveObject atIndex:destinRow];  //改变在<对象>数组中的位置

}

#pragma mark --左滑选项(title可自已定义)

-(NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{

//1.删除

UITableViewRowAction *deleteRoWAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@" 删除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {//title可自已定义

NSLog(@"点击了-删除");

[self.dataArray removeObjectAtIndex:indexPath.row];

[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationLeft];

}];

deleteRoWAction.backgroundColor = [UIColor greenColor]; //定义button的颜色,默认是红色的

//test

UITableViewRowAction *test = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@" 置顶" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {//title可自已定义

NSLog(@"点击了-test");

}];

test.backgroundColor = [UIColor blueColor];

return @[deleteRoWAction,test];//最后返回这俩个RowAction 的数组

}

//注释:从 xib 加载 cell 的方式

方法一:

第一步:
[self.collectionView registerNib:[UINib nibWithNibName:@"QGLShareBtnCell" bundle:nil] forCellWithReuseIdentifier:@"QGLShareBtnCell”];
第二步:
QGLShareBtnCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QGLShareBtnCell" forIndexPath:indexPath];

方法二:

    QGLIMGroupListCell *cell = (QGLIMGroupListCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell= (QGLIMGroupListCell *)[[[NSBundle mainBundle] loadNibNamed:@"QGLIMGroupListCell" owner:self options:nil] lastObject];
}

//另外: 从xib 加载视图 UIView

UIView *view = [[[NSBundle mainBundle] loadNibNamed:@"QGLIMGroupListCell" owner:self options:nil] lastObject];

// 获取 view 上的自视图,通过 tag 获取 UIButton *btn  = [view viewWithTag:111];

UITableView 编辑模式(增加-删除-移动---自定义左滑 title) xib cell的更多相关文章

  1. UITableView 编辑模式(增加-删除-移动---自定义左滑 title)

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  2. IOS第七天(6:UiTableView编辑模式, 拖动位置 ,滑动删除)

    **********UiTableView编辑模式, 拖动位置 ,滑动删除 #import "HMViewController.h" @interface HMViewContro ...

  3. UITableView编辑模式大全解

    1.UITableView 的编辑模式 进入编辑模式 代码体现 // 设置 editing 属性 tableView?.editing = true // 这个设置的时候是有动画效果的 tableVi ...

  4. UITableView编辑模式

    UITableView有两种模式,普通模式和编辑模式.在编辑模式下可以对cell进行排序.删除.插入等等. 如何进入编辑模式 调用tableView的setEditing(editing: Bool, ...

  5. tableview左滑按钮 tableviewcell自定义左滑按钮

    当我们在使用tableview时,往往需要在cell左滑时显示一个或是多个按钮,但系统默认的只可显示一个,如常见的删除按钮,那么当我们的需求要求要有多个按钮时又该怎么办呢,我们往下看. 首先,现看看系 ...

  6. iOS开发——UI进阶篇(四)tableView的全局刷新,局部刷新,左滑操作,左滑出现更多按钮,进入编辑模式,批量删除,自定义批量删除

    首先创建项目,在storyboard如下布局控件,设置好约束 然后创建cell模型类XMGWineCell数据模型类XMGWine创建UITableView,设置数据源协议,实现数据源方法懒加载数据这 ...

  7. [Xcode 实际操作]五、使用表格-(9)删除UITableView单元格(手势左滑调出删除按钮)

    目录:[Swift]Xcode实际操作 本文将演示如何删除某一行单元格.手势左滑调出删除按钮. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIK ...

  8. IOS第13天(3,私人通讯录,登陆状态数据存储,数据缓存, cell的滑动删除,进入编辑模式,单个位置刷新 )

    *****联系人的界面的优化 HMContactsTableViewController.m #import "HMContactsTableViewController.h" # ...

  9. Android ListView左滑删除、左滑自定义功能

    最近项目需要ListView左滑删除功能,搜集了很多资料发现了一个某一前辈写的库能很简单的实现这个功能,而且有源码,直接拿来使用了. 库名字叫做SwipeMenuListView,下面给大家演示一下使 ...

随机推荐

  1. 2015.12.12 DataGridveiw中添加checkbox列

    最简单的办法是通过DataTable来添加 DataTable中添加bool类型的列 dtpdf.Columns.Add("入库", typeof(bool)); DataRow ...

  2. spring 框架整合

    struts hibernate spring 先贴出框架整合需要的maven <project xmlns="http://maven.apache.org/POM/4.0.0&qu ...

  3. 类型:JQuery;问题:ajax调用ashx文件;结果:ashx文件怎么获取$.ajax()方法发送的json数据

    ashx文件怎么获取$.ajax()方法发送的json数据 作者:careful 和ajax相关     新浪微博QQ空间QQ微博百度搜藏腾讯朋友QQ收藏百度空间人人网开心网0 $.ajax({  t ...

  4. The R Project for Statistical Computing

    [Home] Download CRAN R Project About R Contributors What’s New? Mailing Lists Bug Tracking Conferenc ...

  5. DAY10-MYSQL数据类型

    一 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 详细参考: http://www.runoob.com/mysql/mysql-data ...

  6. XMPP协议相关基础概念(Strophe学习笔记)

    相关资料: XMPP官网http://xmpp.org/xmpp-software/libraries/ nginx的转发配置http://mineral.iteye.com/blog/448260 ...

  7. springJDBC01 利用springJDBC操作数据库

    1 什么是springJDBC spring通过抽象JDBC访问并一致的API来简化JDBC编程的工作量.我们只需要声明SQL.调用合适的SpringJDBC框架API.处理结果集即可.事务由Spri ...

  8. Spring集成MyBatis01 【推荐使用】、springMVC中文乱码和json转换问题

    1 导包 1.1 spring-webmvc : spring框架包(当然里面也包含springmvc) 1.2 mybatis : mybatis框架包 1.3 mybatis-spring : s ...

  9. Opencv读取图片像素值并保存为txt文件

    #include <opencv2/opencv.hpp>#include<vector>#include <fstream> using namespace st ...

  10. C++中的纯虚函数和虚函数的作用

    1. 虚函数和纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstract class),而只含有虚函数的类(class)不能被称为抽象类(abstract class) ...