对于app应用来说,使用列表的形式展现数据非UITableView莫属.在熟练掌握了用UITableView展示数据以后,是不是也遇到了需要删除数据的需求?是不是觉得在一行数据上划动一下,然后出现一个删除按钮很酷?废话少说,直奔正题,就由笔者来向您展示一下这个功能的实现是多么容易.
先前的准备工作:
第一步,准备好数据源.
 
  1. #import <UIKit/UIKit.h>
  2. @interface UITableCellSwapDeleteViewController : UIViewController <UITableViewDelegate>{
  3. IBOutlet UITableView *testTableView;
  4. NSMutableArray *dataArray;
  5. }
  6. @property (nonatomic, retain) UITableView *testTableView;
  7. @property (nonatomic, retain) NSMutableArray *dataArray;
  8. @end
  9. - (void)viewDidLoad {
  10. [super viewDidLoad];
  11. dataArray = [[NSMutableArray alloc] initWithObjects:@"1",@"2",@"3",@"4",@"5",nil];
  12. }
这里笔者定义了并实现了一个一维的可变数组.为什么要用可变数组呢?因为我们要删除里面的数据呀.
 
第二步,展示数据.
 
  1. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
  2. // Return the number of sections.
  3. return 1;
  4. }
  5. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  6. // Return the number of rows in the section.
  7. return [dataArray count];
  8. }
  9. // Customize the appearance of table view cells.
  10. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  11. static NSString *CellIdentifier = @"Cell";
  12. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  13. if (cell == nil) {
  14. cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
  15. }
  16. // Configure the cell...
  17. cell.textLabel.text = [dataArray objectAtIndex:indexPath.row];
  18. return cell;
  19. }
通过实现上面三个代理方法向UITableView中添加了数据.

 
通过上面两步就实现了数据展示工作,接下就实现关键的数据删除了.
 
 
  1. - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
  2. return YES;
  3. }
  4. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
  5. if (editingStyle == UITableViewCellEditingStyleDelete) {
  6. [dataArray removeObjectAtIndex:indexPath.row];
  7. // Delete the row from the data source.
  8. [testTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
  9. }
  10. else if (editingStyle == UITableViewCellEditingStyleInsert) {
  11. // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
  12. }
  13. }
 启用上面两个代理,并增加数据删除操作:
[dataArray removeObjectAtIndex:indexPath.row];
 在一条数据上向右划动一下.

 点Delete.

 是不是就成功删除了一条数据呢?
 按理说故事讲到这里也就讲完了.但是笔者想延伸一下.注意看图二划动以后的"Delete",你有没有想把这个东东改掉的冲动呢?比如改成:下载?其实很简单,其实下面这个代理方法:
 
  1. - (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{
  2. return @"下载";
  3. }
再划动一下,是不是变了呢?

相关文章:

UITableView多选删除,类似mail中的多选删除效果

具体代码见附件

本文出自 “rainbird” 博客,请务必保留此出处http://rainbird.blog.51cto.com/211214/634587

UITableView划动删除的实现的更多相关文章

  1. iOS UITableView划动删除的实现

    标签:划动删除 iphone 滑动删除 ios UITableView 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://rainb ...

  2. ios UITableView多选删除

    第一步, - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath ...

  3. UItableView的编辑--删除移动cell

    // // RootViewController.m // UI__TableView的编辑 // // Created by dllo on 16/3/17. // Copyright © 2016 ...

  4. jquery左划出现删除按钮,右滑隐藏

    jquery左侧划出显示删除按钮,右滑动隐藏删除按钮 <!doctype html> <html> <head> <meta charset="ut ...

  5. Swift基础--手势识别(双击、捏、旋转、拖动、划动、长按)

    // //  ViewController.swift //  JieUITapGestureRecognizer // //  Created by jiezhang on 14-10-4. //  ...

  6. android提供ToolBar实现划动菜单的陷阱

    代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android: ...

  7. iphone练习之手势识别(双击、捏、旋转、拖动、划动、长按)UITapGestureRecognizer

    首先新建一个基于Sigle view Application的项目,名为GestureTest;我的项目结构如下: 往viewController.xib文件里拖动一个imageView,并使覆盖整个 ...

  8. Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍

    1.UITapGestureRecognizer 点击/双击手势 代码如下: var tapGesture = UITapGestureRecognizer(target: self, action: ...

  9. ios7禁止默认划动返回

    self.navigationController.interactivePopGestureRecognizer.enabled = NO; 或 在使用之前先要判断是否ios7,不然会导致crash ...

随机推荐

  1. activiti5.13工作流系列(一)-初识

    1.什么是工作流? 工作流就是让多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程,工作流由实体(Entity).参与者(Participant).流程定义(Flow Definition) ...

  2. Tomcat Connector三种执行模式(BIO, NIO, APR)的比較和优化

    Tomcat Connector的三种不同的执行模式性能相差非常大,有人測试过的结果例如以下: 这三种模式的不同之处例如以下: BIO: 一个线程处理一个请求.缺点:并发量高时,线程数较多,浪费资源. ...

  3. 为WPF程序添加字体

    很多时候我们开发的程序可能会在多个版本的Windows上运行,比如XP.Win7.Win8. 为了程序美观,现在很多公司会使用WPF作为程序的界面设计. 跨版本的操作的操作系统往往有一些字体上的问题, ...

  4. FusionCharts JavaScript API Column 3D Chart

    Column 3D Chart labelDisplay  label显示的方式 设置为AUTO 可以根据密度自动排列 slantLabels 0/1  与labelDisplay配合使用 如果lab ...

  5. js本地图片预览,兼容ie[6-9]、火狐、Chrome17+、Opera11+、Maxthon3

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

  6. Linq中的ToList()和CopyToDataTable()

    最近在项目中使用了Linq,想把Linq的查询结果直接转换成DataTable对象,通过查找发现Linq有一个CopyToDataTable<T>的泛型方法,该方法只能在T是DataRow ...

  7. Linux 终端下快速移动光标

    ctr+a:移动光标到命令行开始处(紧接命令提示符号) ctr+e:移动光标到命令行行尾 ctr+k:删除光标到命令行行尾 ctr+u:删除光标到命令行开始处 ctr+h: 往后删除一字符 ctr+d ...

  8. jquery easy ui 简单字段选择搜索实现

    code <!DOCTYPE html><html><head> <meta charset="UTF-8"> <title& ...

  9. EasyUI-datagrid中load,reload,loadData方法的区别

    EasyUI比较常用,其中的datagrid比较复杂,它有其中有load,reload,loadData这三个方法,它们都有相同的功能,都是加载数据的,但又有区别. load方法,比如我已经定义一个d ...

  10. SQL计算表的列数

    select count(syscolumns.name) from syscolumns , sysobjects where syscolumns.id = sysobjects.id and s ...