搜索
您的当前位置:首页正文

UITableView处于编辑状态所在页面消失的时候崩溃_html/css

2023-11-27 来源:谷彼宠物网

当UITableView处于编辑状态,所在页面消失的时候会崩溃。

解决办法:

- (void)viewWillDisappear:(BOOL)animated

{

[super viewWillDisappear:YES];

//当处于编辑状态页面消失的时候会崩溃

[self.tableView setEditing:NO];

}

小编还为您整理了以下内容,可能对您也有帮助:

ios ~ UITableView 编辑(cell的插入, 删除, 移动)

Class : UITableView

Delegate : UITableViewDataSource, UITableViewDelegate

涉及的API:(API的官方详细注释详见本章结尾)

思路:

1.让TableView 进入编辑状态

2.指定哪些 cell 可以进行编辑�

3.指定cell的编辑状态(删除还是插入)

4.选中删除(或插入)状态之后的操作(数据源进行更新, cell删除或插入)

1 . 让TableView 进入编辑状态 (UIViewControll.m)

3.指定cell的编辑状态(删除还是插入) (UITableViewDelegate 协议方法)

4.选中删除(或插入)状态之后的操作(数据源进行更新, cell删除或插入) (UITableViewDataSource 协议方法)

Class: UITableView

Deletage: UITableViewDataSource, UITableViewDelegate

涉及的API:(API的官方详细注释详见本章结尾)

思路:

1.让 TableView 进入或退出 编辑状态

2.指定 tableView 哪些行(cell) 可以移动

3.移动 cell 后的操作: 数据源进行更新

1 . 让 TableView 进入或退出 编辑状态

2.指定 tableView 哪些行(cell) 可以移动 (UITableViewDataSource协议方法)

3.移动 cell 后的操作: 数据源进行更新

UITableView嵌入UIScrollView,左滑手势冲突和多选删除问题

1、UIScrollView上有两个子控件UITableView(分别称作table1,table2)水平布局,作为左右滑动的分页
2、第一个UITableView的cell元素支持左滑弹出删除按钮删除和可选择删除功能

1、table1元素左滑时UIScrollview会将该手势捕获导致左滑删除按钮不显示
2、进入编辑模式table1需要有可以选择的功能,table1编辑模式下的cell选中和不选中的图片需要替换
3、左滑删除的图片需要替换
4、ios11之前和ios11之后cell的删除左滑删除按钮弹出后层级有变化

1、创建UIScrollView的拓展类,并重写shouldRecognizeSimultaneouslyWithGestureRecognizer方法,该方法返回YES表示手势向下传递

   开始左滑时需要让uiscrollView不能滚动,结束删除编辑后需要让uiscrollview能够滚动。开始左滑和结束删除编辑会回调下面两个方法,beginEditingBlock和endEditingBlock分别是禁止滚动和允许滚动方法。

     点击右上角编辑按钮tableview进入编辑状态,此时可以多选cell

     此时可以响应tableview的didselect和didDeselect方法,用NSMutableSet数组保存是否选中的元素index,在显示的时候根据是否选中显示我们自定义的图片

     实现editActionsForRowAtIndexPath回调,编辑左滑按钮数组,可以实现多个左滑按钮,此处只实现删除按钮

     ios11之前,可以在自定义的cell里实现layoutsubviews方法,找到删除按钮控件并替换图片。到了ios11之后左滑cell删除按钮的视图层级已经不在cell里面,所以不能用此方法去重新设置删除按钮图片
我们来看下左滑时cell的层级,以项目中聊天元素McChatCell左滑为例,测试机ios10的左滑cell层级:

UITableViewCellActionButton是左滑出现的按钮层级,它在MCChatCell的层级下面,是UITableViewCellActionButton这个视图。
测试机ios13的左滑cell层级:

ios11之后左滑导致整个cell被包裹在UITableViewCellSwipeContainerView这个控件里面,UISwipeActionStandardButton是左滑出现的删除按钮视图。

    明显可以看到左滑出删除按钮时测试机ios10系统删除按钮在自定义cell层级内,但是测试机ios13的删除按钮层级和自定义cell处于同一层层级,所以ios11之后不能使用重写自定义cell的layoutsubviews方式去修改删除按钮的图片。

     ios11之后可以直接实现uitableview的代理trailingSwipeActionsConfigurationForRowAtIndexPath便可以实现删除图片的自定义

     做这个模块功能踩了很多坑,主要是uitableview的代理和一些处理方法在系统升级后有了改动,cell左滑后层级也有变化,在修改删除按钮和多选按钮图片的方式也要做响应修改。而且table的一些代理方法达到的效果有重叠,比如trailingSwipeActionsConfigurationForRowAtIndexPath和editActionsForRowAtIndexPath实现点击删除按钮方法,但是trailingSwipeActionsConfigurationForRowAtIndexPath只有在ios11之后才有效,而且如果不实现editActionsForRowAtIndexPath这个方法cell左滑也不会出现删除按钮效果,所以ios11之后这两个方法都需要实现,这些很容易让人迷惑

UITableView嵌入UIScrollView,左滑手势冲突和多选删除问题

1、UIScrollView上有两个子控件UITableView(分别称作table1,table2)水平布局,作为左右滑动的分页
2、第一个UITableView的cell元素支持左滑弹出删除按钮删除和可选择删除功能

1、table1元素左滑时UIScrollview会将该手势捕获导致左滑删除按钮不显示
2、进入编辑模式table1需要有可以选择的功能,table1编辑模式下的cell选中和不选中的图片需要替换
3、左滑删除的图片需要替换
4、ios11之前和ios11之后cell的删除左滑删除按钮弹出后层级有变化

1、创建UIScrollView的拓展类,并重写shouldRecognizeSimultaneouslyWithGestureRecognizer方法,该方法返回YES表示手势向下传递

   开始左滑时需要让uiscrollView不能滚动,结束删除编辑后需要让uiscrollview能够滚动。开始左滑和结束删除编辑会回调下面两个方法,beginEditingBlock和endEditingBlock分别是禁止滚动和允许滚动方法。

     点击右上角编辑按钮tableview进入编辑状态,此时可以多选cell

     此时可以响应tableview的didselect和didDeselect方法,用NSMutableSet数组保存是否选中的元素index,在显示的时候根据是否选中显示我们自定义的图片

     实现editActionsForRowAtIndexPath回调,编辑左滑按钮数组,可以实现多个左滑按钮,此处只实现删除按钮

     ios11之前,可以在自定义的cell里实现layoutsubviews方法,找到删除按钮控件并替换图片。到了ios11之后左滑cell删除按钮的视图层级已经不在cell里面,所以不能用此方法去重新设置删除按钮图片
我们来看下左滑时cell的层级,以项目中聊天元素McChatCell左滑为例,测试机ios10的左滑cell层级:

UITableViewCellActionButton是左滑出现的按钮层级,它在MCChatCell的层级下面,是UITableViewCellActionButton这个视图。
测试机ios13的左滑cell层级:

ios11之后左滑导致整个cell被包裹在UITableViewCellSwipeContainerView这个控件里面,UISwipeActionStandardButton是左滑出现的删除按钮视图。

    明显可以看到左滑出删除按钮时测试机ios10系统删除按钮在自定义cell层级内,但是测试机ios13的删除按钮层级和自定义cell处于同一层层级,所以ios11之后不能使用重写自定义cell的layoutsubviews方式去修改删除按钮的图片。

     ios11之后可以直接实现uitableview的代理trailingSwipeActionsConfigurationForRowAtIndexPath便可以实现删除图片的自定义

     做这个模块功能踩了很多坑,主要是uitableview的代理和一些处理方法在系统升级后有了改动,cell左滑后层级也有变化,在修改删除按钮和多选按钮图片的方式也要做响应修改。而且table的一些代理方法达到的效果有重叠,比如trailingSwipeActionsConfigurationForRowAtIndexPath和editActionsForRowAtIndexPath实现点击删除按钮方法,但是trailingSwipeActionsConfigurationForRowAtIndexPath只有在ios11之后才有效,而且如果不实现editActionsForRowAtIndexPath这个方法cell左滑也不会出现删除按钮效果,所以ios11之后这两个方法都需要实现,这些很容易让人迷惑

UITableViewCell突然消失,变成空白

以前一直运行很好的Table页面,突然发现cell有时候会莫名其妙的不见了(整个Cell区域变成空白了)。

貌似是在iOS12上出来的新问题。

解决办法

iOS开发 - 解决UICollectionViewCell/UITableViewCell因重用机制导致的错乱问题

这篇是我多年前写在 博客园 上的一篇关于UICollectionViewCell/UITableViewCell因重用机制导致cell选中项错乱的解决方法,记忆很深刻,近日有朋友问起将文章转移一下。

实际上这些问题是由于设置选中状态的方式和位置不恰当造成的,应该给数据Model添加是否是选中项的字段,下面这种只是补救的方法:

博客园原文: https://www.cnblogs.com/Rong-Shengcom/p/6491805.html

谷彼宠物网还为您提供以下相关内容希望对您有帮助:

iOS tableview edit状态下uitableviewcelleditcontrol不显示的问题...

1. 用了自定义cell 2. 运行后看图层可以看到透明的uitableviewcelleditcontrol(如果没有的话请检查代理实现是否完整)问题原因:自定义cell中的-(void) layoutsubviews方法中没有写[super layoutsubviews];

UITableView嵌入UIScrollView,左滑手势冲突和多选删除问题

1、UIScrollView上有两个子控件UITableView(分别称作table1,table2)水平布局,作为左右滑动的分页 2、第一个UITableView的cell元素支持左滑弹出删除按钮删除和可选择删除功能 1、table1元素左滑时UIScrollview会将该手势捕...

ios ~ UITableView 编辑(cell的插入, 删除, 移动)

1 . 让 TableView 进入或退出 编辑状态 2.指定 tableView 哪些行(cell) 可以移动 (UITableViewDataSource协议方法)3.移动 cell 后的操作: 数据源进行更新

iOS开发 - 解决UICollectionViewCell/UITableViewCell因重用机制导致...

这篇是我多年前写在 博客园 上的一篇关于UICollectionViewCell/UITableViewCell因重用机制导致cell选中项错乱的解决方法,记忆很深刻,近日有朋友问起将文章转移一下。实际上这些问题是由于设置选中状态的方式和位置不恰当造成的...

如何判断UITableViewCell已经消失

CGRect rectInTableView = [tableView rectForRowAtIndexPath:indexPath]; CGRect rectInSuperview = [tableView convertRect:rectInTableView toView:[tableView superview]]; 先计算cell的位置,再转化到view中的位置.

UITableView复用HeaderView刷新问题

最近项目业务需求,在某个页面采用的是UITableView进行布局,用到了HeaderView,以前很少用到 UITableViewHeaderFooterView ,开发的这个API可以达到header,footer的复用。于是我很高兴的去子类化UITableViewHeaderFooterView...

html/css代码要怎么设置才能在浏览器窗口变小的时候先缩小页面的空白部...

一般会给body设定一个显示内容的宽度类似 body{ width:980px;} 然后你给他设定外边距自动就行 body{ width:980px;margin:auto;} 这样在你改变浏览器窗口的时候就会先减少自动的外边距的 ...

iphone开发 UITableView数据刷新

此法在iPhone上切不可行,虽然UITableViewCell可与reuse重复使用以节约内存使用量, 但是数据还是需要host在array或者dictionary中,必然导致程序实用大量内存儿崩溃退出。还好,iPhone系统内置sqlite微型数据库, 这么好的查询插入引...

iOS开发中解决UITableView嵌套ScrollView(UICollectionView)的手 ...

1.需要底部的tableView能够同时响应多个手势(这样在滑动子tableView时候,底部的tableView也能滑动)2.在最开始的时候底部tableView能够滑动,scrollView上的tableView不能滑动。3.当cellA所在的section的sectionHeader滑动到顶部的时候...

UITableViewCell拖拽移动两种实现方法

将tableview设置为可编辑状态,然后实现协议方法中交换数据源和交换cell的位置即可。但是这种实现方法不够自定义,就是比较限制。先上 demo地址 使用可以将demo中的UITableView+MoveCell类别引入工程中,然后绑定数据源即可有拖拽...

Top