UItableView实现移动单元格

 
1,下面的样例是给表格UITableView添加单元格移动功能:

  • (1)给表格添加长按功能,长按后表格进入编辑状态
  • (2)在编辑状态下,可以看到单元格后面出现拖动按钮
  • (3)鼠标按住拖动按钮,可以拖动单元格到任意位置
  • (4)拖动完毕后,还会触发TabelView对应的代理事件
 
2,效果图如下:
 
 
3,代码如下
 import UIKit

 class ViewController: UIViewController,UITableViewDelegate,
     UITableViewDataSource,UIGestureRecognizerDelegate {

     var tableView:UITableView?

     var ctrlnames:[String] = ["UILabel 标签","UIButton 按钮","UIDatePiker 日期选择器",
         "UITableView 表格视图"]

     override func viewDidLoad() {
         super.viewDidLoad()

         //创建表视图
         self.tableView = UITableView(frame: UIScreen.mainScreen().applicationFrame,
             style:UITableViewStyle.Plain)
         self.tableView!.delegate = self
         self.tableView!.dataSource = self
         //创建一个重用的单元格
         self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "SwiftCell")
         self.view.addSubview(self.tableView!)

         //绑定对长按的响应
         var longPress =  UILongPressGestureRecognizer(target:self,
             action:Selector("tableviewCellLongPressed:"))
         //代理
         longPress.delegate = self
         longPress.minimumPressDuration = 1.0
         //将长按手势添加到需要实现长按操作的视图里
         self.tableView!.addGestureRecognizer(longPress)
     }

     //在本例中,只有一个分区
     func numberOfSectionsInTableView(tableView: UITableView!) -> Int {
         ;
     }

     //返回表格行数(也就是返回控件数)
     func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
         return self.ctrlnames.count
     }

     //创建各单元显示内容(创建参数indexPath指定的单元)
     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
         -> UITableViewCell
     {
         //为了提供表格显示性能,已创建完成的单元需重复使用
         let identify:String = "SwiftCell"
         //同一形式的单元格重复使用,在声明时已注册
         let cell = tableView.dequeueReusableCellWithIdentifier(identify, forIndexPath: indexPath)
             as UITableViewCell
         cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
         cell.textLabel?.text = self.ctrlnames[indexPath.row]
         return cell
     }

     //长按表格
     func tableviewCellLongPressed(gestureRecognizer:UILongPressGestureRecognizer)
     {
         if (gestureRecognizer.state == UIGestureRecognizerState.Ended)
         {
             println("UIGestureRecognizerStateEnded");
             //在正常状态和编辑状态之间切换
             if(self.tableView!.editing == false){
                 self.tableView!.setEditing(true, animated:true)
             }
             else{
                 self.tableView!.setEditing(false, animated:true)
             }
         }
     }

     //在编辑状态,可以拖动设置cell位置
     func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
         return true
     }

     //移动cell事件
     func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath,
         toIndexPath: NSIndexPath) {
         if fromIndexPath != toIndexPath{
             //获取移动行对应的值
             var itemValue:String = ctrlnames[fromIndexPath.row]
             //删除移动的值
             ctrlnames.removeAtIndex(fromIndexPath.row)
             //如果移动区域大于现有行数,直接在最后添加移动的值
             if toIndexPath.row > ctrlnames.count{
                 ctrlnames.append(itemValue)
             }else{
                 //没有超过最大行数,则在目标位置添加刚才删除的值
                 ctrlnames.insert(itemValue, atIndex:toIndexPath.row)
             }
         }
     }
 }
 

iOS开发——UI_swift篇&UItableView实现移动单元格的更多相关文章

  1. iOS开发UI篇—简单介绍静态单元格的使用

    iOS开发UI篇—简单介绍静态单元格的使用 一.实现效果与说明 说明:观察上面的展示效果,可以发现整个界面是由一个tableview来展示的,上面的数据都是固定的,且几乎不会改变. 要完成上面的效果, ...

  2. iOS开发——UI_swift篇&UITableView实现单元格展开与隐藏

    UITableView实现单元格展开与隐藏  关于UITableView的展开的收缩在前面的文章我已经结束,就是使用代理,通知,block传值的时候实现的,当时是使用一个Bool值来实现,最后使用着三 ...

  3. iOS开发——UI_swift篇&UITableView实现索引功能

    UITableView实现索引功能     关于UItableView的索引在平时项目中所见不多,最多的就是跟联系人有关的界面,虽然如此,但是作为一个swift开发的程序必须知道的一个技术点,所以今天 ...

  4. iOS开发UI篇—UITableview控件简单介绍

    iOS开发UI篇—UITableview控件简单介绍 一.基本介绍 在众多移动应⽤用中,能看到各式各样的表格数据 . 在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView,UIT ...

  5. iOS开发UI篇—UITableview控件基本使用

    iOS开发UI篇—UITableview控件基本使用 一.一个简单的英雄展示程序 NJHero.h文件代码(字典转模型) #import <Foundation/Foundation.h> ...

  6. iOS开发UI篇—UITableview控件使用小结

    iOS开发UI篇—UITableview控件使用小结 一.UITableview的使用步骤 UITableview的使用就只有简单的三个步骤: 1.告诉一共有多少组数据 方法:- (NSInteger ...

  7. iOS开发——UI_swift篇&TableView实现页眉和页脚

    TableView实现页眉和页脚   在UItableView中header和footer是很常见的,而且他能让你实现很复杂的功能,我们见过最多的就是下拉刷新和上啦加载更多,当然你还可以在上面添加一个 ...

  8. iOS开发——UI_swift篇&TableView自定义聊天界面

    TableView自定义聊天界面   1,下面是一个放微信聊天界面的消息展示列表,实现的功能有: (1)消息可以是文本消息也可以是图片消息 (2)消息背景为气泡状图片,同时消息气泡可根据内容自适应大小 ...

  9. iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建

    iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建 一.实现效果 说明:该示例在storyboard中使用动态单元格来完成. 二.实现 1.项目文件结构 ...

随机推荐

  1. 炮兵阵地(POJ 1185状压dp)

    题意:n*m地图'H'能放'p'不能放,布兵的方格上下左右不能布兵,给你地图求最大布兵数 分析:关系到前两行,所以dp[i][j][k]第i行状态为j,i-1行状态为k时的最大布兵数, 先求出所有可行 ...

  2. 详解Asp.net MVC DropDownLists

    Asp.net MVC中的DropDownLists貌似会让一开始从Asp.net Forms转过来的程序员造成不少迷惑.这篇文章讲述了为了使用DropDownLists,你需要在Asp.Net MV ...

  3. duilib relativepos属性导致控件错误的bug修复

    转载请说明出处,谢谢~~ 我在仿酷狗音乐播放器的开发日志系列里,曾经提到了这个bug,文章地址为:http://blog.csdn.net/zhuhongshu/article/details/381 ...

  4. webpack入门级教程

    Webpack是什么 首先可以看下官方文档,文档是最好的老师. 这里也有国外的一个朋友写的入门介绍. Webpack是由Tobias Koppers开发的一个开源前端模块构建工具.它的基本功能是将以模 ...

  5. gcc编译器基本命令

    1 unix操作系统 ubuntu 12版本Unix内核0.5天 常用命令2 c语言:标准c 十天主要练习动手能力 小案例水平高的 自己去写案例水平低的 理解并跟着写3 c++:5天高级语言的特点:面 ...

  6. HDU-4742 Pinball Game 3D 三维LIS

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4742 题意:求3维的LIS.. 用分治算法搞得,参考了cxlove的题解.. 首先按照x排序,然后每个 ...

  7. 第二百七十七天 how can I 坚持

    开玩笑要有个度,哎,或许这就是缘分,很容易受别人影响吗? 中国人为什么会经常抱怨,不抱怨,挺好. 睡觉,红颜祸水,老婆是要能一起 生活的,不是失去,是上天在帮我,哈哈.

  8. 轻松学习 red5 教程 像视频一样很详细还有代码直接可Copy

    转载自:http://blog.csdn.net/hongdianking/archive/2009/11/12/4804339.aspx 最近要做一个流媒体服务器,在网上逗留了好久决定选择 red5 ...

  9. CodeForces 176B Word Cut (计数DP)

    Word Cut Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit St ...

  10. Codeforces 602B Approximating a Constant Range(想法题)

    B. Approximating a Constant Range When Xellos was doing a practice course in university, he once had ...