服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - iOS中tableview实现编辑、全选及删除等功能的方法示例

iOS中tableview实现编辑、全选及删除等功能的方法示例

2021-03-22 16:24去你的联盟 IOS

这篇文章主要给大家介绍了关于iOS中tableview实现编辑、全选及删除等功能的相关资料,文中通过示例代码介绍的非常详细,不仅是介绍实现的方法,将实现过程中遇到的问题也都分享出来了,需要的朋友们下面来一起看看吧。

前言

我们在日常开发过程中或多或少都会遇到tableview的各种功能,这里简单记录一下tableview的删除和全选删除功能,废话不多说先看一下效果图

iOS中tableview实现编辑、全选及删除等功能的方法示例

既然拿到了需求,就应该想一下如何去实现了,对照上面图片的内容,应该如何实现呢?

看完上图之后发现用到的几个功能:

第一个:左滑删除

第二个:全选删除

左边滑动删除

实现几个代理方法后就可以了

?
1
2
3
-(nsstring *)tableview:(uitableview *)tableview titlefordeleteconfirmationbuttonforrowatindexpath:(nsindexpath *)indexpath {
 return @"删除";
}

改变左滑后按钮的文字

?
1
2
3
-(uitableviewcelleditingstyle)tableview:(uitableview *)tableview editingstyleforrowatindexpath:(nsindexpath *)indexpath{
  return uitableviewcelleditingstyledelete;
}

滑动删除样式,有多中可选,这里返回删除样式

?
1
2
3
4
5
6
7
8
9
- (void)tableview:(uitableview*)tableview commiteditingstyle:(uitableviewcelleditingstyle)editingstyle forrowatindexpath:(nsindexpath*)indexpath {
 if (editingstyle == uitableviewcelleditingstyledelete) {
  [self.dataarray removeobjectatindex: indexpath.row];
  [self.tableview deleterowsatindexpaths:[nsmutablearray arraywithobject:indexpath]
        withrowanimation:uitableviewrowanimationfade];
  [self.tableview reloaddata];
 
 }
}

删除点击方法,处理想要删除的数据

这里有一个需要注意点,一定要先更新数据源,在更新ui

左滑删除就这些代码了,是不是很easy,在来看全选的代码

全选删除

这里我用的是全选功能是系统的方法,没有自定义按钮

点击编辑按钮的时候设置tableview

?
1
[_tableview setediting:yes animated:yes];

返回全选的样式

?
1
2
3
4
-(uitableviewcelleditingstyle)tableview:(uitableview *)tableview editingstyleforrowatindexpath:(nsindexpath *)indexpath
{
  return uitableviewcelleditingstyledelete|uitableviewcelleditingstyleinsert;
}

这样就会出现左侧的选中框

再来就是全选按钮的实现方法

?
1
2
3
4
5
6
7
8
9
10
11
for (int i = 0; i< self.dataarray.count; i++) {
  nsindexpath *indexpath = [nsindexpath indexpathforitem:i insection:0];
  [_tableview selectrowatindexpath:indexpath animated:no scrollposition:uitableviewscrollpositiontop];
 }
 
 if (self.deletearray.count >0) {
  [self.deletearray removeallobjects];
 }
 [self.deletearray addobjectsfromarray:self.dataarray];
 
 [btn settitle:@"取消" forstate:uicontrolstatenormal];

当然取消全选也有方法

?
1
2
3
4
5
for (int i = 0; i< self.dataarray.count; i++) {
  nsindexpath *indexpath = [nsindexpath indexpathforitem:i insection:0];
  [_tableview deselectrowatindexpath:indexpath animated:no];
 
 }

通过全选按钮实现的选中方法,需要在方法里把所有数据都添加到想要删除的数组里面

通过点击tableviewcell选择删除对象的时候需要把想要删除的数据添加到删除数组里面

?
1
2
3
4
5
6
7
8
9
10
- (void)tableview:(uitableview *)tableview didselectrowatindexpath:(nsindexpath *)indexpath{
 
 if (self.btn.selected) {
   nslog(@"选中");
  [self.deletearray addobject:[self.dataarray objectatindex:indexpath.row]];
 
 }else{
  nslog(@"跳转下一页");
 }
}

再次点击取消选中的数据

?
1
2
3
4
5
6
7
8
9
10
11
- (void)tableview:(uitableview *)tableview diddeselectrowatindexpath:(nsindexpath *)indexpath {
 
 if (self.btn.selected) {
  nslog(@"撤销");
  [self.deletearray removeobject:[self.dataarray objectatindex:indexpath.row]];
 
 }else{
  nslog(@"取消跳转");
 }
 
}

问题一:

按照以上方法实现之后就可以实现想要的功能,但是还有ui的问题,那就是选择之后会出现下图的问题

iOS中tableview实现编辑、全选及删除等功能的方法示例

会有一层背景色的覆盖,想要了解的请看看这篇文章 http://www.zzvips.com/article/149453.html

问题二:

还有一个问题 ,在自定义的cell上面添加控件的时候一定要添加到self.contentview上面,否则会出现控件不随cell移动的问题

?
1
[self.contentview addsubview:self.label];

结束

到这里这篇文章的内容基本算完结了,如果还是有不明白的我在此留下demo链接,里面有更详细的注释,demo没有做ui适配,想看效果的画在模拟器6,7上面运行最好

demo地址:http://git.oschina.net/t1_mine/tableviewedit

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对服务器之家的支持。

原文链接:http://www.jianshu.com/p/d5f2e0d9b37a

延伸 · 阅读

精彩推荐
  • IOSIOS 屏幕适配方案实现缩放window的示例代码

    IOS 屏幕适配方案实现缩放window的示例代码

    这篇文章主要介绍了IOS 屏幕适配方案实现缩放window的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    xiari5772021-06-01
  • IOS关于iOS自适应cell行高的那些事儿

    关于iOS自适应cell行高的那些事儿

    这篇文章主要给大家介绍了关于iOS自适应cell行高的那些事儿,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    daisy6092021-05-17
  • IOSiOS中tableview 两级cell的展开与收回的示例代码

    iOS中tableview 两级cell的展开与收回的示例代码

    本篇文章主要介绍了iOS中tableview 两级cell的展开与收回的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    J_Kang3862021-04-22
  • IOSiOS 雷达效果实例详解

    iOS 雷达效果实例详解

    这篇文章主要介绍了iOS 雷达效果实例详解的相关资料,需要的朋友可以参考下...

    SimpleWorld11022021-01-28
  • IOSiOS通过逆向理解Block的内存模型

    iOS通过逆向理解Block的内存模型

    自从对 iOS 的逆向初窥门径后,我也经常通过它来分析一些比较大的应用,参考一下这些应用中某些功能的实现。这个探索的过程乐趣多多,不仅能满足自...

    Swiftyper12832021-03-03
  • IOSIOS开发之字典转字符串的实例详解

    IOS开发之字典转字符串的实例详解

    这篇文章主要介绍了IOS开发之字典转字符串的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这样的方法,需要的朋友可以参考下...

    苦练内功5832021-04-01
  • IOSiOS布局渲染之UIView方法的调用时机详解

    iOS布局渲染之UIView方法的调用时机详解

    在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题,下面这篇文章主要给大家介绍了关于iOS布局渲染之UIView方法调用时机的相关资料...

    windtersharp7642021-05-04
  • IOS解析iOS开发中的FirstResponder第一响应对象

    解析iOS开发中的FirstResponder第一响应对象

    这篇文章主要介绍了解析iOS开发中的FirstResponder第一响应对象,包括View的FirstResponder的释放问题,需要的朋友可以参考下...

    一片枫叶4662020-12-25