版权声明:此文章转载自极客头条
如需转载请联系听云College团队成员小尹 邮箱:yinhy#tingyun.com
一般我们使用列表的形式展现数据就会用到UITableView.在熟练掌握了用UITableView展示数据以后,开发过程中可能会遇到需要删除数据的需求,我们想实现在一行数据上划动一下,然后出现一个删除按钮的效果,其实只需要实现UITableView的一些代理方法就可以了。
首先,我们初始化一个界面,以列表的形式展示
#pragma mark - 初始化UI
- (void)initUI{ self.view.backgroundColor = RGB(242, 242, 247); self.automaticallyAdjustsScrollViewInsets = NO; sideslipTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 60, kScreenWidth, kScreenHeight - 60) style:UITableViewStylePlain]; sideslipTableView.backgroundColor = [UIColor clearColor]; sideslipTableView.delegate = self; sideslipTableView.dataSource = self; sideslipTableView.separatorStyle = UITableViewCellSeparatorStyleNone; [self.view addSubview:sideslipTableView]; }
然后,准备数据源
@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>{ UITableView *sideslipTableView; //可变数组,用于删除数据 NSMutableArray *dataArray; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [self initUI]; dataArray = [NSMutableArray arrayWithArray: @[@"1111",@"2222",@"3333",@"4444",@"5555",@"6666",@"7777",@"8888",@"9999"]]; }
接下来我们要将数据显示出来
#pragma mark - 行 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return dataArray.count; } #pragma mark - 行高 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ return 46; } #pragma mark - cell内容 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *indefier = @"cell"; sideslipTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:indefier]; if (!cell) { cell = [[sideslipTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:indefier]; } cell.selectionStyle = UITableViewCellSelectionStyleNone; cell.lable.text = dataArray[indexPath.row]; return cell; }
最后,实现UITableView的一些代理方法
//先要设Cell可编辑 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { return YES; } //定义编辑样式 - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { return UITableViewCellEditingStyleDelete; } //进入编辑模式,按下出现的编辑按钮后,进行删除操作 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { [dataArray removeObjectAtIndex:indexPath.row]; // Delete the row from the data source. [sideslipTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; } }
//修改编辑按钮文字
- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath { return @"删除"; }
这样就可以实现UITableViewCell滑动删除的效果啦。
效果图:
效果图1效果图2