• 自定义uitableviewcell通过加上滑动手势进行删除对应的行。PS:用代理来实现


    #import <UIKit/UIKit.h>

    @class ZSDCustomCell;

    //协议

    @protocol ZSDCustomCellDelegate <NSObject>

    //判断选择某行以及某行中的按钮

    -(void)deleteDidSelectCell:(ZSDCustomCell *)customCell andClickButton:(int)selectButtonIndex;

    @end

    @interface ZSDCustomCell : UITableViewCell<UIGestureRecognizerDelegate>

    //显示内容的label标签

    @property (weak, nonatomic) IBOutlet UILabel *contentLabel;

    //右边红色的view

    @property (weak, nonatomic) IBOutlet UIView *rightView;

    //删除按钮

    @property (weak, nonatomic) IBOutlet UIButton *deleteBtn;

    //代理

    @property(weak,nonatomic)id<ZSDCustomCellDelegate>delegate;

    @end

    #import "ZSDCustomCell.h"

    @implementation ZSDCustomCell

    -(void)awakeFromNib

    {

        //左滑动

        UISwipeGestureRecognizer *swipeLeft=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipe:)];

        

        //右滑动

        UISwipeGestureRecognizer *swipeRight=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipe:)];

        

        //单击手势

    //    UITapGestureRecognizer *singleTap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleSingleTap:)];

        

        [swipeLeft setNumberOfTouchesRequired:1];

        [swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];

        [swipeRight setNumberOfTouchesRequired:1];

        [swipeRight setDirection:UISwipeGestureRecognizerDirectionRight];

        

        //[self addGestureRecognizer:singleTap];

        [self addGestureRecognizer:swipeLeft];

        [self addGestureRecognizer:swipeRight];

        

        

    }

    - (void)setSelected:(BOOL)selected animated:(BOOL)animated {

        [super setSelected:selected animated:animated];

        

        // Configure the view for the selected state

    }

    -(void)handleSwipe:(UISwipeGestureRecognizer *)gesture

    {

        

        //如果是向左滑,显示右边的view

        if (gesture.direction==UISwipeGestureRecognizerDirectionLeft)

        {

            [UIView animateWithDuration:1.0 animations:^{

                [self.deleteBtn addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];

                self.rightView.hidden=NO;

            }];

        }

        //如果是向右滑,隐藏右边的view

        else if (gesture.direction==UISwipeGestureRecognizerDirectionRight)

        {

            

            [UIView animateWithDuration:1.0 animations:^{

               

                self.rightView.hidden=YES;

            }];

        

        }

    }

    //按钮事件

    -(void)buttonAction:(UIButton *)sender

    {

        if (_delegate&&[_delegate respondsToSelector:@selector(deleteDidSelectCell:andClickButton:)])

        {

            [_delegate deleteDidSelectCell:self andClickButton:(int)sender.tag];

        }

    }

    /*

     - (void)handleSingleTap:(UITapGestureRecognizer *)gestureRecognizer

     {

     [UIView animateWithDuration:0.5 animations:^

     {

     self.rightView.hidden=NO;

     }];

     }

     */

    @end

    #import <UIKit/UIKit.h>

    @interface ZSDViewController : UIViewController

    @end

    #import "ZSDViewController.h"

    #import "ZSDCustomCell.h"

    @interface ZSDViewController ()<UITableViewDataSource,UITableViewDelegate,ZSDCustomCellDelegate>

    @property(nonatomic,strong)NSMutableArray *dataArray;

    @property (weak, nonatomic) IBOutlet UITableView *myTableView;

    @end

    @implementation ZSDViewController

    #pragma mark - life circle

    - (void)viewDidLoad

    {

        [super viewDidLoad];

        

        //已经在storyboard上进行设置代理,这里不需要在写

        //_myTableView.dataSource=self;

        //_myTableView.delegate=self;

        

        

        self.myTableView.separatorStyle=UITableViewCellSeparatorStyleSingleLine;

        for (int i=0; i<10; i++)

        {

            [[self dataArray] addObject:[NSString stringWithFormat:@"%d",i]];

            

        }

    // Do any additional setup after loading the view, typically from a nib.

    }

    - (void)didReceiveMemoryWarning

    {

        [super didReceiveMemoryWarning];

        // Dispose of any resources that can be recreated.

    }

    #pragma mark - private

    -(NSMutableArray *)dataArray

    {

        if (_dataArray==nil)

        {

            _dataArray=[NSMutableArray array];

        }

        

        return _dataArray;

    }

    #pragma  mark - UITableViewDataSource

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

    {

        return _dataArray.count;

    }

    -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

    {

        return 1;

    }

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

    {

        ZSDCustomCell *cell=[tableView dequeueReusableCellWithIdentifier:@"cell"];

        cell.delegate=self;

        cell.rightView.hidden=YES;

        cell.selectionStyle = UITableViewCellSelectionStyleNone;

        cell.deleteBtn.tag=indexPath.row;

        cell.contentLabel.text=_dataArray[indexPath.row];

        cell.tag=indexPath.row;

        return cell;

    }

    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

        return 80;

    }

    #pragma mark - ZSDCustomCellDelegate

    -(void)deleteDidSelectCell:(ZSDCustomCell *)customCell andClickButton:(int)selectButtonIndex

    {

        int result=selectButtonIndex;

        if (customCell.tag==result)

        {

            NSIndexPath *indexPath=[NSIndexPath indexPathForRow:result inSection:0];

            [self.dataArray removeObjectAtIndex:result];

            [self.myTableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

            [self.myTableView reloadData];

        }

    }

    @end

  • 相关阅读:
    数据库设计三大范式
    常用正则表达式
    全国省市县无刷新多级关联菜单
    可选择Email和用户名登录的代码
    注册与登录界面的美化
    只能输入汉字js脚本
    js确认删除对话框
    同步文本框内容的JS代码
    网站变灰代码
    悬浮右侧可展开搜索的客服代码
  • 原文地址:https://www.cnblogs.com/thbbsky/p/4087399.html
Copyright © 2020-2023  润新知