继承MGSwipeTableCell无法滑动的问题
1. 什么是MGSwipeTableCell
用过微信的人都知道在会话列表页中,滑动一个Cell会出现,删除和标为未读两个按钮。
删除很正常,Tableview自带就有这个功能,但是iOS不允许程序扩展滑动视图,也就是说除了自带的删除,不能出现其他的按钮,微信的标为未读其实是自定义扩展出来的。MGSwipeTableCell这个开源组件就是为了添加Cell的滑动按钮的。让我们来看一下这个插件的效果图
image很酷炫有木有!!
它的GitHub地址是:MGSwipeTableCell,在README.md中介绍了最简单的使用它的方式。非常简单明了。相信大家一看就懂了。它还自带了一个demo,可以让你看清除它所有的展示方式。
2. 无法滑动?
我这边要说的是一个使用时可能出现的问题。
当我按照官方给出的方法来使用MGSwipeTableCell的时候,我的Cell是无法滑动的,就跟没有使用MGSwipeTableCell一样。但是当我下拉刷新(我的应用有做下拉刷新)之后,Cell又变得可以滑动,和预期的一样。这让我很疑惑
这边放上两张对比图:
image
image
我查看源代码发现在MGSwipeTableCell类中的
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
方法中有一个方法initViews
,这个方法添加了单元格所需要的滑动视图和手势操作。那我就怀疑是因为
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
没有被调用。跟踪发现这个方法确实不会被调用,除非你是完全代码自定义单元格,在storyboard或者xib中是不会用这个方法初始化单元格的。那么也就意味着initViews
没有被调用,滑动视图和手势没有被添加。
那就说的通了,然后我在MGSwipeTableCell
中继续搜索initViews
,发现在awakeFromNib
也存在。但是我在自定义的Cell中没有调用父类MGSwipeTableCell
的awakeFromNib
,所以导致初始化不成功。在调用之后解决了这个问题。
网友评论