UITabelview的删除
删除的效果
- Automatic

- Bottom

- Fade

- left

- middle

- none

- right

- top

- Automatic
简单删除
先删除数据源里的数据,然后再删除cell,否者会报错let indexPath = NSIndexPath.init(forRow: 1, inSection: 0)
let indexPath1 = NSIndexPath.init(forRow: 3, inSection: 0)
//title是数据源
self.titles.removeAtIndex(0)
self.titles.removeAtIndex(0)
self.tableView?.deleteRowsAtIndexPaths([indexPath,indexPath1], withRowAnimation: .Left)
``` 如果先删除cell,再删除数据库,会抛出exception
self.tableView?.deleteRowsAtIndexPaths([indexPath,indexPath1], withRowAnimation: .Left)
//title是数据源
self.titles.removeAtIndex(0)
self.titles.removeAtIndex(0)
2016-07-30 21:44:26.613 UITableViewLearn[14976:575144] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (4) must be equal to the number of rows contained in that section before the update (4), plus or minus the number of rows inserted or deleted from that section (0 inserted, 2 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'
UIKit在调用deleteRowsAtIndexPaths时,会判断前后数据源的一致性,如果前后不一致,会抛出异常。然而只是判断cell的个数是否一致。如果删除了第0、1列的数据,然后删除第2、3列的cell,也不会报错。
let indexPath = NSIndexPath.init(forRow: 2, inSection: 0)
let indexPath1 = NSIndexPath.init(forRow: 3, inSection: 0)
//title是数据源
self.titles.removeAtIndex(0)
self.titles.removeAtIndex(0)
self.tableView?.deleteRowsAtIndexPaths([indexPath,indexPath1], withRowAnimation: .Left)
上面的不会报错
简单插入
同样是先插入数据,再插入cell。
self.titles.insert("insert", atIndex: 1)
self.tableView?.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Left)
同时删除和插入
- 准备数据源
- 调用
beginUpdates() - 调用
deleteRowsAtIndexPaths,insertRowsAtIndexPaths:等方法 - 调用
endUpdates方法
对indexPath进行操作的次序
- 在一个animation block(
beginUpdates()和endUpdates之间的部分)中,所有的插入和选择操作都发生在删除操作之后 - 删除和reload操作的指定的indexpath是原来tableView(未发生动画之前)的indexPath
- 插入操作指定的indexPath是前面代码执行完成以后的新tableView的indexPath。
于此对比,如果对一个mutable数组进行插入和删除,那么前面的删除和插入操作会改变这个数组某个元素的index。
- 在一个animation block(
UITabelview的删除的更多相关文章
- "无法删除数据库,因为该数据库当前正在使用"问题解决
异常处理汇总-数据库系列 http://www.cnblogs.com/dunitian/p/4522990.html 以前刚学数据库的时候比较苦恼这个问题,今天删除的时候又看见了,正好一起记录一下 ...
- php批量删除
php批量删除可以实现多条或者全部数据一起删除 新建php文件 显示数据库中内容: <table width="100%" border="1" cell ...
- linux centos中添加删除修改环境变量,设置java环境变量
前言 安装完软件必要添加环境变量.指令很少,然而长时间不写就会不自信:我写的对吗?于是百度开始,于是发现又是各有千秋.好吧,好记星不如烂笔头.当然,最重要的是,百度出来的都他妈的是如何添加环境变量,只 ...
- ASP.NET MVC一次删除多笔记录
批量删除数据记录,如下面的截屏: 先选中想删除的记录,然后点一下删除铵钮,系统将把选中的记录一次性删除.在此,Insus.NET不想每删除一笔记录连接一次数据库. 因此需要把选择的记录一次上传至服务器 ...
- 如何区别数据库删除语句drop与delete与truncate?
1.delete:删除数据表中的行(可以删除某一行,也可以在不删除数据表的情况下删除所有行) 删除某一行:delete from 数据表名称 where 列名称=值: 删除所有行:delete*fro ...
- sql 删除表中的重复记录
嗯,遇见了表中存在重复的记录的问题,直接写sql删除时最快的,才不要慢慢的复制到excel表中慢慢的人工找呢.哼. 如下sql,找出重复的记录,和重复记录中ID值最小的记录(表中ID为自增长) sel ...
- ORACLE从共享池删除指定SQL的执行计划
Oracle 11g在DBMS_SHARED_POOL包中引入了一个名为PURGE的新存储过程,用于从对象库缓存中刷新特定对象,例如游标,包,序列,触发器等.也就是说可以删除.清理特定SQL的执行计划 ...
- mysql删除重复记录语句的方法
例如: id name value 1 a pp 2 a pp 3 b iii 4 b pp 5 b pp 6 c pp 7 c pp 8 c iii id是主键 要求得到这样的结果 id name ...
- SQL Server 批量删除存储过程
原理很简单的'drop proc xxx'即可,下面有提供了两种方式来删除存储过程,其实本质是相同的,方法一是生成删除的sql后直接执行了,方法二会生成SQL,但需要检查后执行,个人推荐第二种做法. ...
随机推荐
- Redis3
Redis到底该如何利用 上两篇受益匪浅,秉着趁热打铁,不挖到最深不罢休的精神,我决定追加这篇.上一篇里最后我有提到实现分级缓存管理应该是个可行的方案,因此今天特别实践了一下.不过缓存分级之后也发现了 ...
- [置顶] EasyMock的简单使用
EasyMock总览 下面,我将讲述如何使用JUnit和EasyMock框架来进行单元测试. 在现实情况下,我们通常是在一些类里使用另外的一些类.在进行真正的测试之前,你可能需要做很多的工作,比喻说安 ...
- 【转】视差滚动(Parallax Scrolling)效果的原理和实现
原文:http://www.cnblogs.com/JoannaQ/archive/2013/02/08/2909111.html 视差滚动(Parallax Scrolling)是指让多层背景以不同 ...
- php和表单(1)
先来一段处理表单的html代码(test.html) <form action="index.php" method="post"> name : ...
- String.Join的实现
String.Join的实现 在开发中,有时候会遇到需要把一个List对象中的某个字段用一个分隔符拼成一个字符串的情况.比如在SQL语句的in条件中,我们通常需要把List<int>这样的 ...
- Javascript多线程引擎(四)
Javascript多线程引擎(四)--之C语言单继承 因为使用C语言做为开发语言, 而C语言在类的支持方面几乎为零, 而Javascript语言的Object类型是一个非常明显的类支持对象,所以这里 ...
- .Net组件程序设计
.Net组件程序设计之上下文 在后续篇幅的远程调用的文章里有说到应用程序域,那是大粒度的控制程序集的逻辑存在,那么想对对象的控制又由谁来做主呢?没错了,就是上下文.CLR把应用程序域更细化了,在应用程 ...
- Web API中使用Dependency Resolver
Web API中使用Dependency Resolver 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyo ...
- LinQ动态排序
LinQ动态排序 首先修复程序中的一个BUG这个BUG在GridPager类中,把sord修改为sort这个名称填写错误,会导致后台一直无法获取datagrid的排序字段 本来是没有这一讲的,为了使2 ...
- linux 之 getopt_long()
文件 #include <getopt.h> 函数原型 int getopt_long(int argc, char * const argv[], const char *optstri ...







