UITableViewCell上的删除按钮(tableView自带的和自定义的)

#import "ViewController.h"


@interface ViewController () <UITableViewDataSource,UITableViewDelegate>

@property (nonatomic,strong)UITableView *table;

@property (nonatomic,strong)NSMutableArray *array;


@end


@implementation ViewController


- (void)viewDidLoad {

    [superviewDidLoad];

    

    _table = [[UITableViewalloc]initWithFrame:self.view.boundsstyle:UITableViewStylePlain];

    _table.delegateself;

    _table.dataSourceself;

    [self.viewaddSubview:_table];


    _array =[NSMutableArrayarrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",nil];

    

}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return _array.count;

}


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    staticNSString *RootViewControllerCell =@"RootViewControllerCell";

    UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:RootViewControllerCell];

    if(cell ==nil)

    {

        cell = [[UITableViewCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:RootViewControllerCell];

        cell.frame =CGRectZero;

        

        UIButton *button = [UIButtonbuttonWithType:UIButtonTypeCustom];

        [button setTitle:@"删除"forState:UIControlStateNormal];

        [button setTitleColor:[UIColorredColor]forState:UIControlStateNormal];

        [button setFrame:CGRectMake(280,10,100,30)];

        [button addTarget:selfaction:@selector(btnClick:)forControlEvents:UIControlEventTouchUpInside];

        [cell.contentViewaddSubview:button];

    }

    

    cell.textLabel.text = [_array objectAtIndex:[indexPath row]];

//记录tag值,以便自定义删除的时候可以获取到单元格

    cell.tag = [indexPath row];

    return cell;

}

//自定义删除

-(void)btnClick:(UIButton *)button

{


// 获取当前cell

    UITableViewCell *cell = (UITableViewCell *)deleteBtn.superview;

    [_array removeObjectAtIndex:[cell tag]]; // 定义按钮的功能,现在为删除

//延迟删除,防止数据错乱

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        [_table reloadData];

    });

}


//系统自带删除

//1.将删除标识换成文字

-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath

{

    return @"删除";

}

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

{

//设置编辑模式为删除模式

    if (editingStyle == UITableViewCellEditingStyleDelete) {

        

        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"确定要删除该商品?删除后无法恢复!" preferredStyle:1];

        UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

            

            

            [_array removeObjectAtIndex:indexPath.row];

            //    删除

            [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

            //延迟0.5s刷新一下,否则数据会乱

            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

                [_table reloadData];

            });

        }];

        

        UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];

        

        [alert addAction:okAction];

        [alert addAction:cancel];

        [self presentViewController:alert animated:YES completion:nil];

    }

    if (dataArray.count == 0) {

        [self cartEmptyShow];

    }

}




- (void)didReceiveMemoryWarning {

    [superdidReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}



@end

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值