• IOS tableView 滑动删除与排序功能


    //
    //  ViewController.m
    //  0429
    //
    //  Created by apple on 15/4/29.
    //  Copyright (c) 2015年 gense. All rights reserved.
    //
    
    #import "ViewController.h"
    #import "ProductCategory.h"
    
    @interface ViewController ()<UITableViewDataSource,UITableViewDelegate>
    {
        NSMutableArray * productCategoryList ;
    }
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
     
        //从配置文件中初始化商品类型信息
       [self initProudctCategory];
        
    }
    
    #pragma mark  从配置文件中初始化商品类型信息
    - (void) initProudctCategory
    {
        //读取参数文件
        NSString * paramPath = [[NSBundle mainBundle] pathForResource:@"shops.plist" ofType:nil];
        NSArray * dataArr = [NSArray arrayWithContentsOfFile:paramPath];
    
        productCategoryList = [NSMutableArray arrayWithCapacity:10];
        
        //遍历plist文件
        [dataArr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            [productCategoryList addObject: [ProductCategory productCategoryWithName:obj[@"name"] andDesc:obj[@"desc"] icon:obj[@"icon"]]];
        }];
        
    }
    
    
    #pragma mark tableviewDeleage  总共有多少行记录
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return [productCategoryList count];
    }
    
    #pragma mark 实例化每行cell
    - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        NSString * cellIdentified  = @"productCategoryTableViewCell";
        
        //从缓存中加载可用的cell
        UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:cellIdentified];
        
        if(cell  == nil) //从缓存在未拿到合适的cell
        {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentified];
            
        }
        
        //设置cell中的属性
        cell.textLabel.text = [productCategoryList[indexPath.row] name];
        cell.detailTextLabel.text =  [productCategoryList[indexPath.row] desc];
        
        cell.imageView.image =  [UIImage imageNamed:[productCategoryList[indexPath.row] icon]];
        
        if([productCategoryList[indexPath.row] isSelected])
        {
            [cell setAccessoryType:UITableViewCellAccessoryCheckmark];
        }
        else{
            [cell setAccessoryType:UITableViewCellAccessoryNone];
        }
        
        return  cell;
    }
    
    
    #pragma mark 设置tableview每行的高度
    
    - (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return 50.0;
    }
    
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        [productCategoryList[indexPath.row] setIsSelected: ![productCategoryList[indexPath.row] isSelected ]];
        
        [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
        
    
    }
    
    
    
    #pragma  mark 滑动删除
    - (void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
    {
            if(UITableViewCellEditingStyleDelete == editingStyle)
            {
                [productCategoryList removeObjectAtIndex:indexPath.row];
                
                //[_productCategoryTV reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop];
                
                [_productCategoryTV deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop];
            }
    }
    
    
    #pragma mark 拖动排序
    -(void) tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
    {
        ProductCategory * p = productCategoryList[sourceIndexPath.row];
        
        [productCategoryList removeObject:p];
        
        
        [productCategoryList insertObject:p atIndex:destinationIndexPath.row];
        
    }
    
    
    
    #pragma mark  删除选中的数据
    - (IBAction)trashItemClick:(id)sender
    {
    //    NSMutableArray * deleteArr = [NSMutableArray arrayWithCapacity:10];
    //    NSMutableArray * indexPathArr = [NSMutableArray arrayWithCapacity:10    ];
    //    
    //    [productCategoryList enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    //        if([obj isSelected])
    //        {
    //            [deleteArr addObject:obj];
    //            [indexPathArr addObject:[NSIndexPath indexPathForItem:idx inSection:0]];
    //        }
    //    }];
    //    
    //    [productCategoryList removeObjectsInArray:deleteArr];
    //    
    //    //tableview reload
    //    [_productCategoryTV deleteRowsAtIndexPaths:indexPathArr withRowAnimation:UITableViewRowAnimationMiddle];
        _productCategoryTV.editing = !_productCategoryTV.isEditing;
        
    }
    @end
  • 相关阅读:
    win7下apache+mysql+php安装配置
    mysql -- 外键及数据的完整性
    mysql -- 索引的使用
    mysql 字符类型
    mysql 常用命令
    mysql 时间类型
    URI与URL
    Flask基本问题
    Session和Cookie的区别与联系
    Python flask关于新闻项目业务逻辑梳理
  • 原文地址:https://www.cnblogs.com/wangjuneng/p/4469669.html
Copyright © 2020-2023  润新知