zoukankan      html  css  js  c++  java
  • 使用 StoryBoard 制作一个能够删除cell的TableView

    本篇博客方便自己检索使用。资源链接

    下面是制作效果图,点击删除按钮,就能将该cell删除:

     

    下面是主要的代码:

    #define KSUPER_TAG 20000
    #define KDEFAU_TAG 10000
    
    #import "WholeViewController.h"
    #import "HJ_CELL_3.h"
    #import "HJ_CELL_4.h"
    #import "NULL_CELL.h"
    #import "HRAdView.h"
    #import "FrameMacro.h"
    #import "ColorMacro.h"
    #import "FontMacro.h"
    
    @interface WholeViewController ()
    {
        NSMutableArray *_dataSource;
        UIView         * _tabHead_View ;
        
    }
    @end
    
    @implementation WholeViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        [self setTitle:@"全部"];
      
        self.tableView.backgroundColor = K_SET_COLOR_VALUE(K_ROOT_BGC);
        
        // 假设有表头数据
        [self createTableHeader];
        
        // 设置无选择线
        [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
        
        self.tableView.showsHorizontalScrollIndicator = NO;
        self.tableView.showsVerticalScrollIndicator = NO;
        
        // 初始化数据源
        _dataSource = [NSMutableArray arrayWithObjects:@"3",@"3",@"2",@"3",@"2",@"3",@"2",@"3",@"2",@"3",@"2",@"3",@"2",@"3",@"2",@"3",@"2",@"0", nil];
    
    }
    
    // 创建表头
    - (void)createTableHeader{
        
        if (!_tabHead_View) {
            
            // 表头部分的View
            _tabHead_View = [[UIView alloc] initWithFrame:CGRectMake(50,50, K_WIDTH, 62)];
            
            _tabHead_View.backgroundColor = K_SET_COLOR_VALUE(K_ROOT_BGC);
            
            // 初始化广告控件
            HRAdView *hdview = [[HRAdView alloc] initWithTitles:@[@"你有一笔支付订单30分钟后关闭",@"你有一笔支付订单60分钟后关闭",@"你有一笔支付订单90分钟后关闭"]];
            hdview.time = 2;
            [hdview beginScroll];
            hdview.backgroundColor = [UIColor whiteColor];
            hdview.isHaveTouchEvent = YES;
            hdview.clickAdBlock = ^(NSUInteger index){
                
                NSLog(@"下标是 %ld",(unsigned long)index);
            };
            hdview.frame = CGRectMake(0, 12, K_WIDTH, 49);
            [_tabHead_View addSubview:hdview];
            
            // 分割线 1
            UIView *line_1 = [[UIView alloc] initWithFrame:CGRectMake(0, 11, K_WIDTH, 1)];
            [line_1 setBackgroundColor:K_SET_COLOR_VALUE(@"#dbdbdb")];
            [_tabHead_View addSubview:line_1];
            
            // 分割线 2
            UIView *line_2 = [[UIView alloc] initWithFrame:CGRectMake(0, 61, K_WIDTH, 1)];
            [line_2 setBackgroundColor:K_SET_COLOR_VALUE(@"#dbdbdb")];
            [_tabHead_View addSubview:line_2];
            
        }
        
        self.tableView.tableHeaderView = _tabHead_View;
        
    }
    
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        if (self.isViewLoaded&&self.view.window) {
            self.view = nil;
        }
    }
    
    #pragma mark - Table view data source
    
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        
        return 1;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    
        return [_dataSource count];
    }
    
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        
        UITableViewCell *cell = nil;
        
        NSString *mask = _dataSource[indexPath.row];
        
        
        if ([mask isEqualToString:@"3"]) {
            
            cell = (HJ_CELL_3*)[tableView dequeueReusableCellWithIdentifier:@"HJ_CELL_3" forIndexPath:indexPath];
            
            if (nil == cell) {
                
                cell = (HJ_CELL_3*)[[[NSBundle mainBundle] loadNibNamed:@"HJ_CELL_3" owner:self options:nil] lastObject];
            }
            
            ((HJ_CELL_3*)cell).block = ^(NSInteger statusNum){
            
                if ( 1 == statusNum) {
                    
                    // 执行删除任务
                    [self tableView:tableView commitEditingStyle:UITableViewCellEditingStyleDelete forRowAtIndexPath:indexPath];
                }
            };
        }else
        
        if ([mask isEqualToString:@"2"]) {
            
            cell = (HJ_CELL_4*)[tableView dequeueReusableCellWithIdentifier:@"HJ_CELL_4" forIndexPath:indexPath];
            
            if (nil == cell) {
                
                cell = (HJ_CELL_4*)[[[NSBundle mainBundle] loadNibNamed:@"HJ_CELL_4" owner:self options:nil] lastObject];
            }
            
            ((HJ_CELL_4*)cell).block = ^(NSInteger statusNum){
                
                if ( 1 == statusNum) {
                    
                    // 执行删除任务
                    [self tableView:tableView commitEditingStyle:UITableViewCellEditingStyleDelete forRowAtIndexPath:indexPath];
                }
            };
    
        }else {
            
            cell = (NULL_CELL*)[tableView dequeueReusableCellWithIdentifier:@"NULL_CELL" forIndexPath:indexPath];
            
            if (nil == cell) {
                
                cell = (NULL_CELL*)[[[NSBundle mainBundle] loadNibNamed:@"NULL_CELL" owner:self options:nil] lastObject];
            }
        }
        
    
        return cell;
    }
    
    
    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
        
        NSString *mask = _dataSource[indexPath.row];
        
        if ([mask isEqualToString:@"3"]) {
            
            return 105;
        }else
        
        if ([mask isEqualToString:@"2"]) {
            
            return 80;
        }else {
            
            return 20;
        }
        
        return 105;
        
    }
    
    // 删除某些行的方法
    - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
        if (editingStyle == UITableViewCellEditingStyleDelete) {
            // Delete the row from the data source
            
            [_dataSource removeObjectAtIndex:indexPath.row];
    
            [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
        
            [self.tableView reloadData];
            
        } else if (editingStyle == UITableViewCellEditingStyleInsert) {
            // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
        }   
    }
    
    
    /*
    // Override to support rearranging the table view.
    - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
    }
    */
    
    /*
    // Override to support conditional rearranging of the table view.
    - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
        // Return NO if you do not want the item to be re-orderable.
        return YES;
    }
    */
    
    /*
    #pragma mark - Navigation
    
    // In a storyboard-based application, you will often want to do a little preparation before navigation
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
        // Get the new view controller using [segue destinationViewController].
        // Pass the selected object to the new view controller.
    }
    */
    
    @end
  • 相关阅读:
    图片的像素和位图相关的知识
    LeetCode第四十四题-字符串匹配
    LeetCode第四十三题-字符串相乘
    LeetCode第四十二题-可装雨水的容量
    LeetCode第四十一题-寻找数组中的最小的缺失正整数
    LeetCode第四十题-求组合所有可能性(2)
    LeetCode第三十九题-求组合所有可能性
    LeetCode第三十八题-报数
    LeetCode第三十七题-实现数独
    LeetCode第三十六题-判断九宫格是否有效
  • 原文地址:https://www.cnblogs.com/benpaobadaniu/p/5134392.html
Copyright © 2011-2022 走看看