一套友好的、方便集成的针对cell的左滑编辑功能! 实现一个类似微信聊天页表的左滑编辑功能。
- 解决删除cell是越界的问题
- 对cell关闭做优化
- 新增当手指接触到tableView空白处能关闭cell
- 打开、关闭cell时,完全实现和微信聊天列表页的cell一样的动画效果
- Demo中实现不同cell不同数量的编辑model,并实现置顶等功能
- 按照苹果官方的MVC的设计模式封装的Cell控件,类似UITableView的实现方式
- LNSwipeCell的编辑功能的数据由LNSwipeCellDataSource提供
- LNSwipeCell的编辑功能的事件由LNSwipeCellDelegate提供
- 实现左滑显示,标为已读、删除、置顶等多个按钮
- 触摸到已经打开的cell的contentView区域,关闭cell
- 触模到其他cell,关闭已经打开的cell
- 滑动tableView,关闭已经打开的cell
- 触摸到tableView的空白区域,关闭打开的cell
- 打开和关闭cell时,编辑按钮按照微信一样的动画出现
- 点击删除按钮,变化为确认删除按钮
- 由删除变化到确认删除的操作有问题,因为一旦改变tableview的子视图的frame,tabelview就会吧contentView归零,目前没找到合适的解决方式
- 极端情况细节的处理不够完美
- LNSwipeCell -- 封装了左滑编辑的cell
- 把LNSwipeCell类拖进工程中
- 让你的cell继承LNSwipeCell,因为lNSwipeCell只封装了左滑编辑的逻辑和实现,因此你要根据需求自己绘制cell的UI
- 把之前加载到cell的contentView上的视图,都加载到cell的ln_contentView上
- 接受LNSwipeCellDataSource和LNSwipeCellDelegate
- 根据需要实现对应的协议方法
- 创建cell的设置
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
LNSwipeCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
cell.swipeCellDelete = self;
cell.swipeCellDataSource = self;
return cell;
}
- 需要实现的数据协议
/**
number of items
@param swipeCell 当前cell
@return count of items;
*/
- (int)numberOfItemsInSwipeCell:(LNSwipeCell *)swipeCell;
/**
设置每个可操作的item都为button,把需要设置的属性放到字典中返回
@param swipeCell cell
@param index 位置自右往左,从0开始
@return 设置好的item信息:包括字体、颜色、图片、背景色等
key包括如下字段,根据需要设置
extern const NSString *LNSWIPCELL_FONT;
extern const NSString *LNSWIPCELL_TITLE;
extern const NSString *LNSWIPCELL_TITLECOLOR;
extern const NSString *LNSWIPCELL_BACKGROUNDCOLOR;
extern const NSString *LNSWIPCELL_IMAGE;
*/
- (NSDictionary *)dispositionForSwipeCell:(LNSwipeCell *)swipeCell atIndex:(int)index;
/**
设置每一项的宽度
@param swipeCell cell
@param index 位置自右往左,从0开始
@return 宽度
*/
- (CGFloat)itemWithForSwipeCell:(LNSwipeCell *)swipeCell atIndex:(int)index;
- 可能感兴趣的事件协议
/**
某一个item被点击后触发的事件
@param swipeCell cell
@param button button
@param index 位置
*/
- (void)swipeCell:(LNSwipeCell *)swipeCell didSelectButton:(UIButton *)button atIndex:(int)index;
/**
cell正在所有滑动,手指还没有离开,不确定是打开还是关闭
@param swipeCell cell
*/
- (void)swipeCellMoving:(LNSwipeCell *)swipeCell;
/**
当左滑打开后触发该事件
@param swipeCell cell
*/
- (void)swipeCellHadOpen:(LNSwipeCell *)swipeCell;
/**
cell优化打开时触发该事件
@param swipeCell cell
*/
- (void)swipeCellHadClose:(LNSwipeCell *)swipeCell;