登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

自定义滑动cell删除视图

[复制链接]
来自: FonChY 分类: iOS精品源码 上传时间: 2016-4-10 11:02:48
Tag:自定义 custom cell 列表 UITableViewCell

项目介绍:

文:FonChY


自定义滑动cell删除视图,自定义了cell中的按钮样式


使用方法:
[Objective-C] 查看源文件 复制代码
#import "FYTableViewController.h"
#import "FYTableViewCell.h"
#import "PureLayout.h"

@interface FYTableViewController ()<SwipeableCellDelegate>
//可变数组
@property (nonatomic, strong) NSMutableArray *objects;

//可变集合
@property (nonatomic, strong) NSMutableSet *cellsCurrentlyEditing;
@end

@implementation FYTableViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    
    self.cellsCurrentlyEditing = [NSMutableSet new];
    
    self.view.backgroundColor = [UIColor whiteColor];

    self.objects = [NSMutableArray array];
    

    NSInteger numberOfItems = 30;
    for (NSInteger i = 1; i <= numberOfItems; i++) {
        NSString *item = [NSString stringWithFormat:@"      Longer Title Item #%ld", i];
        [self.objects addObject:item];
    }
    [self.tableView registerClass:[FYTableViewCell class] forCellReuseIdentifier:@"Cell"];
}

#pragma mark - Table view data source



- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    
    return self.objects.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
#warning 不加载缓存池里的了.防止cell重用,这也是未解决的地方,希望得到宝贵的意见
    
    FYTableViewCell *cell = [[FYTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
    cell.delegate = self;
    NSString *item = self.objects[indexPath.row];
    cell.itemText = item;
    
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    
    if ([self.cellsCurrentlyEditing containsObject:indexPath]) {
        [cell openCell];
    }
    
    return cell;
}
// 如果实现了这个方法, 就自动实现了滑动删除的功能,滑动的时候不会调用这个方法,在删除的时候才会调用这个方法(提交了一个删除操作会调用)
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        [self.objects removeObjectAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
    } else {
        NSLog(@"Unhandled editing style! %ld", editingStyle);
    }
}
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}
#pragma mark - SwipeableCellDelegate
- (void)buttonOneActionForItemText:(NSString *)itemText {
    NSLog(@"In the delegate, Clicked button one for %@", itemText);
}

- (void)buttonTwoActionForItemText:(NSString *)itemText {
    NSLog(@"In the delegate, Clicked button two for %@", itemText);
}

- (void)cellDidOpen:(UITableViewCell *)cell {
    //记住打开的cell
    NSIndexPath *currentEditingIndexPath = [self.tableView indexPathForCell:cell];
    [self.cellsCurrentlyEditing addObject:currentEditingIndexPath];
}

- (void)cellDidClose:(UITableViewCell *)cell {
    [self.cellsCurrentlyEditing removeObject:[self.tableView indexPathForCell:cell]];
}

@end




DEMO下载:

相关源码推荐:

我来说两句
*滑动验证:
所有评论(12)
whanybzzd123 2016-6-4 14:13:48
我只是路过打酱油的。
回复
狼小逸 2016-6-8 16:17:30
虽不明,但觉厉!
回复
狼小逸 2016-6-8 16:18:00
感谢分享,Code4App有你更精彩:)
回复
狼小逸 2016-6-8 16:20:23
就这点破东西还要10块钱,功能还没实现
回复
左文定 2016-6-12 09:38:23
楼主用心了,内容非常精彩。
回复
左文定 2016-6-12 14:26:12
楼主用心了,内容非常精彩。
回复
Niko_Alpha 2016-6-13 23:38:34
楼主威武啊,Code4App有你更给力!
回复
xiaoliCode 2016-6-15 08:46:04
虽不明,但觉厉!
回复
MEL2016 2016-6-16 10:47:56
精华内容,楼主V5!
回复
12下一页
提取码:  下载次数:101 状态:已购或VIP 售价:0(原价:10)金钱 下载权限:初级码农 
1759 0 101
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表