精华内容
下载资源
问答
  • 以下就来解说一下怎样实现排序。  排序是当表格进入编辑状态后,在单元格的右側会出现一个button。点击button,就能够拖动单元格。移动位置。进行手动排序。 使用系统自带拖动排序功能的步骤: 1、让...

      UITbableView作为列表展示信息。除了展示的功能,有时还会用到删除。排序等功能。以下就来解说一下怎样实现排序。

      排序是当表格进入编辑状态后,在单元格的右側会出现一个button。点击button,就能够拖动单元格。移动位置。进行手动排序。

     

    使用系统自带拖动排序功能的步骤:

    1、让tableView进入编辑状态,也就是设置它的editing为YES

    2、返回编辑模式,也就是实现UITableViewDelegate中的tableview:editingStyleForRowAtIndexPath:方法,在里面返回UITableViewCellEditingStyleNone模式。

    假设不实现,默认返回的就是删除模式

    3、实现tableView:moveRowAtIndexPath:toIndexPath方法,仅仅要实现该方法,就能实现单元格的拖动排序。但仅仅是实现了表面的排序,并没有改动真实地数据

    4、在方法中完毕数据模型的更新

    代码:

    //  ViewController.m
    //  JRTableView删除
    //
    //  Created by jerehedu on 15/6/11.
    //  Copyright (c) 2015年 jerehedu. All rights reserved.
    //
    
    #import "ViewController.h"
    #import "Goods.h"
    
    @interface ViewController ()<UITableViewDataSource, UITableViewDelegate>
    
    {
        UITableView *_tableView; //列表
        
        NSMutableArray *_goodsAry; //商品数组
        
        UIButton *_editBtn; //编辑button
    }
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        //加入标题
        UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, 44)];
        titleLabel.text = @"购物车";
        titleLabel.textAlignment = NSTextAlignmentCenter;
        titleLabel.backgroundColor = [UIColor redColor];
        titleLabel.textColor = [UIColor whiteColor];
        [self.view addSubview:titleLabel];
        
        //加入编辑button
        _editBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        _editBtn.frame = CGRectMake(self.view.frame.size.width-60, 25, 50, 34);
        [_editBtn setTitle:@"编辑" forState:UIControlStateNormal];
        [_editBtn setTitle:@"完毕" forState:UIControlStateSelected];
        _editBtn.titleLabel.font = [UIFont systemFontOfSize:15];
        _editBtn.backgroundColor = [UIColor colorWithRed:0.8 green:0.8 blue:0.8 alpha:0.5];
        [self.view addSubview:_editBtn];
        [_editBtn addTarget:self action:@selector(clickEditBtn:) forControlEvents:UIControlEventTouchUpInside];
        
        //加入tableview
        _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height-64)];
        _tableView.dataSource = self;
        _tableView.delegate = self;
        [self.view addSubview:_tableView];
        
        //取数据
        NSArray *ary = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"ShoppingGoodsList" ofType:@"plist"]];
        
        //把数据存到模型对象中,然后把对象存到数组中
        _goodsAry = [NSMutableArray array];
        for (int i=0; i<ary.count; i++) {
            Goods *good = [Goods goodsWithDic:ary[i]];
            [_goodsAry addObject:good];
        }
    }
    
    #pragma mark 数据源  返回有几行
    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return _goodsAry.count;
    }
    
    #pragma mark 每行显示内容
    -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *idGood = @"goods";
        
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:idGood];
        
        if (cell==nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:idGood];
        }
        
        Goods *good = _goodsAry[indexPath.row];
        
        cell.imageView.image = [UIImage imageNamed:good.icon];
        cell.textLabel.text = good.name;
        cell.detailTextLabel.text = good.details;
        cell.detailTextLabel.numberOfLines = 6;
        cell.detailTextLabel.textColor = [UIColor brownColor];
        
        return cell;
    }
    
    #pragma mark 选中行
    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // 取消选中状态
        [tableView deselectRowAtIndexPath:indexPath animated:YES];
    }
    
    #pragma mark 设置行高
    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return 110;
    }
    
    #pragma mark 点击编辑button
    - (IBAction)clickEditBtn:(UIButton *)sender {
        
        //设置tableview编辑状态
        BOOL flag = !_tableView.editing;
        [_tableView setEditing:flag animated:YES];
        _editBtn.selected = flag;
    }
    
    #pragma mark 选择编辑模式,加入模式非常少用,默认是删除
    -(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return UITableViewCellEditingStyleNone;
    }
    
    #pragma mark 排序 当移动了某一行时候会调用
    //编辑状态下。仅仅要实现这种方法,就能实现拖动排序
    -(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
    {
        // 取出要拖动的模型数据
        Goods *goods = _goodsAry[sourceIndexPath.row];
        //删除之前行的数据
        [_goodsAry removeObject:goods];
        // 插入数据到新的位置
        [_goodsAry insertObject:goods atIndex:destinationIndexPath.row];
    }
    
    @end

     

      想要了解很多其它内容的小伙伴。能够点击查看源代码,亲自执行測试。

      疑问咨询或技术交流,请增加官方QQ群:JRedu技术交流 (452379712)

     

    作者:杰瑞教育
    出处:http://blog.csdn.net/jerehedu/ 
    本文版权归烟台杰瑞教育科技有限公司和CSDN共同拥有,欢迎转载,但未经作者允许必须保留此段声明。且在文章页面明显位置给出原文连接。否则保留追究法律责任的权利。
     

    转载于:https://www.cnblogs.com/yfceshi/p/6856021.html

    展开全文
  • 如何响应CSliderCtrl控件的拖动消息以及得到当前位置 如何使用CFileDialog对话框 如何使用CColorDialog对话框 如何使用CFontDialog对话框 如何避免CRichEditCtrl中显示中文乱码的问题 向列表框CListBox添加很多数据...
  • 怎样升级安装《管家婆》Windows版? #1.具体步骤如下: 1).为避免在升级过程中断电或其它原因造成数据破坏和丢失,首先进行数据备份。 2).安装方法:请将升级版的1#盘插入软驱,在Win9x系统下运行1#盘的"Setup...
  • C# winform典型系统开发模板

    热门讨论 2011-09-17 15:13:21
     4.2.4 怎样操作RichtextBox控件的选择文本 82  4.2.5 如何获取数据表中字段的描述信息 83  4.3 设计过程 83  4.3.1 获取数据表中字段的中文信息 84  4.3.2 添加数据表的查询条件 86  4.3.3 ...
  • delphi 开发经验技巧宝典源码

    热门讨论 2010-08-12 16:47:23
    0217 根据表格中的数据长度自动调整表格宽度 144 7.2 ADO数据处理技术 145 0218 如何把ADO中的数据导入到ListBox中 145 0219 使用SQL语句保存数据 146 0220 使用赋值方式保存数据 147 0221 当ADO循环删除...
  • 0217 根据表格中的数据长度自动调整表格宽度 144 7.2 ADO数据处理技术 145 0218 如何把ADO中的数据导入到ListBox中 145 0219 使用SQL语句保存数据 146 0220 使用赋值方式保存数据 147 0221 当ADO循环删除...
  • 0217 根据表格中的数据长度自动调整表格宽度 144 7.2 ADO数据处理技术 145 0218 如何把ADO中的数据导入到ListBox中 145 0219 使用SQL语句保存数据 146 0220 使用赋值方式保存数据 147 0221 当ADO循环删除...
  • 0217 根据表格中的数据长度自动调整表格宽度 144 7.2 ADO数据处理技术 145 0218 如何把ADO中的数据导入到ListBox中 145 0219 使用SQL语句保存数据 146 0220 使用赋值方式保存数据 147 0221 当ADO循环删除...
  • 0217 根据表格中的数据长度自动调整表格宽度 144 7.2 ADO数据处理技术 145 0218 如何把ADO中的数据导入到ListBox中 145 0219 使用SQL语句保存数据 146 0220 使用赋值方式保存数据 147 0221 当ADO循环删除...
  • 0217 根据表格中的数据长度自动调整表格宽度 144 7.2 ADO数据处理技术 145 0218 如何把ADO中的数据导入到ListBox中 145 0219 使用SQL语句保存数据 146 0220 使用赋值方式保存数据 147 0221 当ADO循环删除...
  • 4.2.4 怎样操作RichtextBox控件的选择文本 4.2.5 如何获取数据表中字段的描述信息 4.3 设计过程 4.3.1 获取数据表中字段的中文信息 4.3.2 添加数据表的查询条件 4.3.3 向SQL语句中添加括号 4.3.4 查询生成后的SQL...
  • 4.2.4 怎样操作RichtextBox控件的选择文本 4.2.5 如何获取数据表中字段的描述信息 4.3 设计过程 4.3.1 获取数据表中字段的中文信息 4.3.2 添加数据表的查询条件 4.3.3 向SQL语句中添加括号 4.3.4 查询生成后的SQL...
  • 4.2.4 怎样操作RichtextBox控件的选择文本 4.2.5 如何获取数据表中字段的描述信息 4.3 设计过程 4.3.1 获取数据表中字段的中文信息 4.3.2 添加数据表的查询条件 4.3.3 向SQL语句中添加括号 4.3.4 查询生成后的SQL...
  • C#开发典型模块大全

    2014-03-12 18:11:22
    4.2.4 怎样操作RichtextBox控件的选择文本 82 4.2.5 如何获取数据表中字段的描述信息 83 4.3 设计过程 83 4.3.1 获取数据表中字段的中文信息 84 4.3.2 添加数据表的查询条件 86 4.3.3 向SQL语句中添加...
  • VC++常用功能实例

    2010-01-25 23:28:46
    ◆如何使用ctrllist控件实现表格◆ 25 ◆如何从INI文件中得到值◆ 25 ◆如何将图标文件写到窗口中◆ 26 ◆如何得到本机的IP地址◆ 26 ◆如何使用全局变量◆ 26 ◆如何让一个字符加上回车、换行◆ 26 ◆如何定义、...
  • ◆如何使用ctrllist控件实现表格◆ 25 ◆如何从INI文件中得到值◆ 25 ◆如何将图标文件写到窗口中◆ 26 ◆如何得到本机的IP地址◆ 26 ◆如何使用全局变量◆ 26 ◆如何让一个字符加上回车、换行◆ 26 ◆如何定义、...
  • visio教程PDF

    热门讨论 2010-05-17 23:56:22
    16.1.3 改变Size&Position窗口位置 16.2 改变图形大小 16.2.1 点击拖动方法 16.2.2 使用数字控制改变大小 16.3 图形比例 16.4 移动图形 16.4.1 旋转图形 16.4.2 韶转图形 16.4.3 拖动图形 ...
  • Visio 2000 技术大全

    2010-05-01 13:38:29
    16.1.3 改变Size&Position窗口位置 16.2 改变图形大小 16.2.1 点击拖动方法 16.2.2 使用数字控制改变大小 16.3 图形比例 16.4 移动图形 16.4.1 旋转图形 16.4.2 韶转图形 16.4.3 ...
  • C#.net_经典编程例子400个

    热门讨论 2013-05-17 09:25:30
    39 1.11 设置窗体位置 40 实例038 设置窗体在屏幕中的位置 40 实例039 始终在最上面的窗体 41 1.12 设置窗体大小 42 实例040 限制窗体大小 42 实例041 获取桌面大小 42 实例042 ...
  • 实例278 删除表格中指定的记录 401 实例279 利用SQL语句删除数据 402 9.10 数据记录 403 实例280 分页显示信息 403 实例281 移动记录 404 9.11 数据维护 406 实例282 在C#中分离SQL Server数据库 406 ...
  •  实例038 设置窗体在屏幕中的位置 40  实例039 始终在最上面的窗体 41  1.12 设置窗体大小 42  实例040 限制窗体大小 42  实例041 获取桌面大小 42  实例042 在窗口间移动按钮 43  实例043 如何...
  • 软件界面设计工具_3款合集

    千次下载 热门讨论 2010-06-29 03:52:47
    预制了六十多个界面元素,从简单的输入框,下拉框,到经常用得到的导航条,日历,表格,到复杂的Tag Cloud,Cover Flow, 地图,WYSWYG的格式工具栏等,有了这些不用从头画起,其实比用白板都快; 界面元素的修改很...
  • 实例040 设置窗体在屏幕中的位置 51 实例041 始终在最上面的窗体 51 1.12 设置窗体大小 52 实例042 限制窗体大小 53 实例043 获取桌面大小 54 实例044 组件大小随窗体的改变而改变 54 实例045 在...
  • 实例040 设置窗体在屏幕中的位置 51 实例041 始终在最上面的窗体 51 1.12 设置窗体大小 52 实例042 限制窗体大小 53 实例043 获取桌面大小 54 实例044 组件大小随窗体的改变而改变 54 实例045 在...
  • 疯狂JAVA讲义

    2014-10-17 13:35:01
    学生提问:当我们使用编译C程序时,不仅需要指定存放目标文件的位置,也需要指定目标文件的文件名,这里使用javac编译Java程序时怎么不需要指定目标文件的文件名呢? 13 1.5.3 运行Java程序 14 1.5.4 根据...
  • 实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例268 程序运行时禁止关机 364 实例269 获取任务栏尺寸大小 365 实例270 改变系统提示信息...
  • C#程序开发范例宝典(第2版).part02

    热门讨论 2012-11-12 07:55:11
    一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面...实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...
  • C#程序开发范例宝典(第2版).part13

    热门讨论 2012-11-12 20:17:14
    一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面...实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...
  • 一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面...实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...

空空如也

空空如也

1 2 3
收藏数 46
精华内容 18
关键字:

怎样拖动表格位置