MGSwipeTableCell(用于cell侧滑按钮设置):
github下载地址:https://github.com/MortimerGoro/MGSwipeTableCell
使用方法可见企鹅的简书:http://www.jianshu.com/p/25908a61f849
在使用MGSwipeTableCell这个库的时候,我遇到了两个问题:
一、我直接把项目的Cell的父类从tableviewcell改为了MGSwipeTableCell,结果导致侧滑有时会正常显示,有时会只显示文字。
会被影响的代理方法:
1.(NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath —— ios 8.0后侧滑菜单的新接口,可支持多个侧滑按钮(只能支持文字不能支持图片有点难受)。
2.(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath —— 这个回调决定了在当前indexPath的Cell是否可以编辑。
3.(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath —— 这个回调可以返回Cell的编辑样式。
4.(nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos) —— iOS 11 提供的新的代理方法.新的方法提供了:左侧按钮自定义、右侧按钮自定义、自定义图片、背景颜色,通过 UIContextualAction 来设置.
tableView的编辑模式可以参考秋刀生鱼片的文章:http://www.jianshu.com/p/f65ca53fc9ba
二、此外还碰到了Cell重用机制产生的问题,
现象:在第一个cell上设置的按钮block内的事件(比如输出1),会在第1+N,1+2N,1+3N…上重现(同样会输出1,而不会输出1+n)。
原因:使用block建立侧滑按钮时,按钮绑定的cell是固定的,重用的使用依旧会使用这个按钮,结果会和预期不符合。
具体改法和原理请见:https://www.cnblogs.com/yangkun852/p/5369943.html