美文网首页
继承MGSwipeTableCell无法滑动的问题

继承MGSwipeTableCell无法滑动的问题

作者: _赖笔小新 | 来源:发表于2014-09-26 11:13 被阅读925次

    继承MGSwipeTableCell无法滑动的问题

    1. 什么是MGSwipeTableCell

    用过微信的人都知道在会话列表页中,滑动一个Cell会出现,删除和标为未读两个按钮。

    删除很正常,Tableview自带就有这个功能,但是iOS不允许程序扩展滑动视图,也就是说除了自带的删除,不能出现其他的按钮,微信的标为未读其实是自定义扩展出来的。MGSwipeTableCell这个开源组件就是为了添加Cell的滑动按钮的。让我们来看一下这个插件的效果图

    imageimage

    很酷炫有木有!!

    它的GitHub地址是:MGSwipeTableCell,在README.md中介绍了最简单的使用它的方式。非常简单明了。相信大家一看就懂了。它还自带了一个demo,可以让你看清除它所有的展示方式。

    2. 无法滑动?

    我这边要说的是一个使用时可能出现的问题。

    当我按照官方给出的方法来使用MGSwipeTableCell的时候,我的Cell是无法滑动的,就跟没有使用MGSwipeTableCell一样。但是当我下拉刷新(我的应用有做下拉刷新)之后,Cell又变得可以滑动,和预期的一样。这让我很疑惑

    这边放上两张对比图:


    imageimage
    imageimage

    我查看源代码发现在MGSwipeTableCell类中的
    - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

    方法中有一个方法initViews,这个方法添加了单元格所需要的滑动视图和手势操作。那我就怀疑是因为
    - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier没有被调用。跟踪发现这个方法确实不会被调用,除非你是完全代码自定义单元格,在storyboard或者xib中是不会用这个方法初始化单元格的。那么也就意味着initViews没有被调用,滑动视图和手势没有被添加。

    那就说的通了,然后我在MGSwipeTableCell中继续搜索initViews,发现在awakeFromNib也存在。但是我在自定义的Cell中没有调用父类MGSwipeTableCellawakeFromNib,所以导致初始化不成功。在调用之后解决了这个问题。

    相关文章

      网友评论

          本文标题:继承MGSwipeTableCell无法滑动的问题

          本文链接:https://www.haomeiwen.com/subject/evputttx.html