UITableView的添加、删除、移动操作

#pragma mark -----表视图的移动操作-----

//移动的第一步也是需要将表视图的编辑状态打开
//2、指定哪些行可以进行移动
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    //默认都可以移动
    return YES;
}

//3、移动完成之后要做什么事,怎么完成移动
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {
    //先记录原有位置下的模型数据
    Student *student = _dataArray[sourceIndexPath.row];
    [student retain];

    //删除原位置下的模型数据
    [_dataArray removeObjectAtIndex:sourceIndexPath.row];

    //在新位置将记录的模型数据添加到数据数组中
    [_dataArray insertObject:student atIndex:destinationIndexPath.row];

    [student release];
}

#pragma mark -----删除、添加数据-----

//1、让将要执行删除、添加操作的表视图处于编辑状态
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    //先执行父类中的这个方法。
    [super setEditing:editing animated:animated];

    //表视图执行此方法
    [self.tableView setEditing:editing animated:animated];
}

//2、指定表示图中哪些行可以处于编辑状态
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
//    if (indexPath.row % 2 == 0) {
//        return YES;
//    } else {
//        return NO;
//    }
    //默认全部行都可以编辑
    return YES;
}

//3、指定编辑样式,到底是删除还是添加  delegate协议里面
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    //此方法如果不重写,默认是删除样式
//    return UITableViewCellEditingStyleDelete;
    return UITableViewCellEditingStyleInsert;
}

//不管是删除还是添加,这个方法才是操作的核心方法,当点击删除、或者添加按钮时,需要做什么事情,怎样才能完成删除或者添加操作,全部在这个方法内部指定。
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView beginUpdates];//表视图开始更新(可写可不写)

    if (editingStyle == UITableViewCellEditingStyleDelete) {
        //将该位置下的单元格删除
        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

        //删除数据数组中与该单元格绑定的数据
        [_dataArray removeObjectAtIndex:indexPath.row];
    } else if (editingStyle == UITableViewCellEditingStyleInsert) {
        Student *student = _dataArray[indexPath.row];

        //构建一个位置信息
        NSIndexPath *index = [NSIndexPath indexPathForRow:0 inSection:0];

        [tableView insertRowsAtIndexPaths:@[index] withRowAnimation:UITableViewRowAnimationTop];
        [_dataArray insertObject:student atIndex:index.row
         ];
    }

    [tableView endUpdates];//表视图结束更新(同样可写可不写,如果写了[tableView beginUpdates],endUpdates也要写)
) }
时间: 2024-12-20 05:27:41

UITableView的添加、删除、移动操作的相关文章

iOS UITableView划动删除的实现

标签:划动删除 iphone 滑动删除 ios UITableView 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://rainbird.blog.51cto.com/211214/634587 从七八月前对苹果一无所知,到现在手持iphone,ipad,itouch有三个线上成熟app并熟练开发ios应用.一路走来一直站在前辈的肩膀上不断进步.如今生活工作稳定是时候将一直以来的一些心得整理出来了.想来想去决定先说说UITab

UITableView左右滑动删除常见问题

对于app应用来说,使用列表的形式展现数据非UITableView莫属.在熟练掌握了用UITableView展示数据以后,是不是也遇到了需要删除数据的需求?是不是觉得在一行数据上划动一下,然后出现一个删除按钮很酷?废话少说,直奔正题,就由笔者来向您展示一下这个功能的实现是多么容易. 先前的准备工作: 第一步,准备好数据源. #import <UIKit/UIKit.h> @interface UITableCellSwapDeleteViewController : UIViewControl

双链集合添加删除算法

双链集合添加删除算法: package com.linkes; public class MyLinkeList { /** * 更多资料欢迎浏览凯哥学堂官网:http://kaige123.com * @author 小沫 */ /** * 链表集合他是于双链条式进行引用上下家,好处可以知道上家和下家是谁 * 利于修改,可以从首部开始删除数据也可以从尾部删除. * 即可从中间指定位置删除. */ private Object[] shou; private Object[] wei; // 默

如何恢复,迁移,添加, 删除 Voting Disks

如何恢复,迁移,添加, 删除 Voting Disks恢复流程 在11gR2 之前,我们可以直接直接使用dd命令对voting disk进行备份.DD示例 备份votedisk盘:[[email protected] bin]# dd if=/dev/raw/raw2 of=/home/oracle/voting_disk.bak 恢复votedisk盘:[[email protected] bin]# dd if=/home/oracle/voting_disk.bak of=/dev/raw

Linux/Ubuntu中添加删除新用户

操作环境:Ubuntu Server 14.04,系统上仅有一个用户root 1. adduser 命令添加新用户 #adduser username 注意adduser与useradd命令的区别,useradd是Linux系统中二进制可执行程序工具,adduser是封装了useradd之后的可执行脚本.因此adduser比useradd功能更加强大和智能,adduser在创建用户同时进行创建用户主目录等其他相关工作. 2.赋予新建用户管理员权限 只需要将用户加入sudo用户组中就可以赋予用户管

JTree 添加 , 删除, 修改

package com.swing.demo; import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.CellEdi

class 样式的添加,删除,切换

<1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script src="script/jquery-1.11.0.min.js" type="text/javascript"></script> <style type="text/css"&g

为虚拟磁盘 添加/删除物理磁盘

为虚拟磁盘 添加/删除物理磁盘 Add-Physicaldisk     此命令用于将指定的物理磁盘添加到虚拟磁盘    在存储池一节已经介绍过将物理磁盘加入存储池的用法,    在这里将介绍在虚拟磁盘上的用法    在正式介绍命令用法之前先回答 在Get-StoragePool,Get-VirtualDisk,New-VirtualDisk    三节中的提问    要获取未被虚拟磁盘使用的物理磁盘,你必须学会灵活的使用管道命令    $pool_pd = @(Get-StoragePool 

&lt;linux小脚本&gt;批量添加/删除用户

批量添加/删除用户,当输入add时,判断用户是否存在,存在则显示存在,不存在则添加:当输入del时,判断用户是否存在,存在则删除用户,不存在则显示不存在. #!/bin/bash if [ $1 == "add" ];then for i in {1..10}; do if id user$i &> /dev/null;then echo "the user$i exists!" else useradd user$i &> /dev/n

SQL Server 如何添加删除外键、主键,以及更新自增属性

1.添加删除主键和外键 例如: -----删除主键约束DECLARE @NAME SYSNAMEDECLARE @TB_NAME SYSNAMESET @TB_NAME = 'Date'SELECT TOP 1  @NAME=NAME FROM SYS.OBJECTS WITH(NOLOCK)WHERE TYPE_DESC ='PRIMARY_KEY_CONSTRAINT' AND PARENT_OBJECT_ID = (    SELECT OBJECT_ID    FROM SYS.OBJE