您的位置:首页 > 移动开发 > IOS开发

IOS tableView 滑动删除与排序功能

2015-04-30 19:07 337 查看
//
//  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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: