iOS TableView多选删除理解2
因为镔哥学习iOS也不是很长时间,所以对很多控件都是一边工作一边学习,现在最近因为项目需求又研究了一下多选删除,其实网上很多这样的demo,但是基本不是纯代码,而且很多方面没有考虑,然后我自己理解上又根基一些demo,自己先了一个,供大家一起学习。
我讲解一下思路就直接代码吧:
思路:一般要实现多选删除
1:前提你要有数据:
NSMutableArray *dataArray;//临时用假数据代替
2:你也要有一个存储勾选删除的数据NSMutableArray *removeList;//勾选时要删除的数据
3:当你勾选删除的时候,你要实现
[_dataArray removeObjectsInArray:self.removeList];//删除已经勾选的数据
然后重新加载tableview
[tableView reloadData];//重新加载
接着就要清空已经勾选了的存储数据
[self.removeList removeAllObjects];//清空已经勾选了的数据列表
4:你要实现tableView的代理方法//编辑样式
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
//添加一项
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
//取消一项
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
//
// ViewController.m
// TableView多选删除
//
// Created by apple on 14/12/9.
// Copyright (c) 2014年 huweibin. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>
{
UITableView *tableView;
}
@property(nonatomic,strong)NSMutableArray *dataArray;//临时用假数据代替
@property (nonatomic, retain) NSMutableArray *removeList;//勾选时要删除的数据
@property(nonatomic,strong)UIBarButtonItem *rightBtn;
@end
@implementation ViewController
@synthesize removeList;
- (void)viewDidLoad {
[super viewDidLoad];
[self initAllData];
}
//实现操作
-(void)initAllData
{
//1:必须首先加载tableview
tableView=[[UITableView alloc]initWithFrame:CGRectMake(0, 64, 320, self.view.frame.size.height-64)];
[self.view addSubview:tableView];
tableView.delegate= self;
tableView.dataSource = self;
//2:初始化数据
_dataArray = [[NSMutableArray alloc] initWithObjects:@"王菲",@"周迅",@"李冰冰",@"白冰",@"紫薇",@"马苏",@"刘诗诗",@"赵薇",@"angelbaby",@"熊黛林",nil];
self.removeList = [[NSMutableArray alloc]init];
//3:导航栏设置
self.view.backgroundColor = [UIColor whiteColor];
UINavigationBar *navbar = [[UINavigationBar alloc]initWithFrame:CGRectMake(0, 0, 320, 64)];
[navbar setBackgroundColor:[UIColor clearColor]];
// 3.设置导航栏文字的主题
NSShadow *shadow=[[NSShadow alloc]init];
[shadow setShadowOffset:CGSizeMake(0, 0)];
[navbar setTitleTextAttributes:@{
NSForegroundColorAttributeName : [UIColor orangeColor],
NSShadowAttributeName : shadow
}];
//4.创建一个导航栏集合
UINavigationItem *navItem = [[UINavigationItem alloc]initWithTitle:@"多选删除"];
// 5.设置状态栏样式
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
//6.创建一个右边按钮
_rightBtn = [[UIBarButtonItem alloc] initWithTitle:@"删除" style:UIBarButtonItemStyleDone target:self action:@selector(toggleEdit:)];
self.navigationItem.rightBarButtonItem = _rightBtn;
[navItem setRightBarButtonItem:_rightBtn];
//7.把导航栏集合添加到导航栏中,设置动画关闭
[navbar pushNavigationItem:navItem animated:NO];
[self.view addSubview:navbar];
}
//多选删除操作(其实很简单,重点理解这里)
-(void)toggleEdit:(id)sender {
[tableView setEditing:!tableView.editing animated:YES];//能出那个??勾选删除
if (tableView.editing)
[self.navigationItem.rightBarButtonItem setTitle:@"确定"];
else
{
[self.navigationItem.rightBarButtonItem setTitle:@"删除"];
if (self.removeList.count > 0) {
[_dataArray removeObjectsInArray:self.removeList];//删除已经勾选的数据
[tableView reloadData];//重新加载
[self.removeList removeAllObjects];//清空已经勾选了的数据列表
}
}
}
#pragma mark -
#pragma mark Table Data Source Methods
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section {
return [_dataArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *DeleteMeCellIdentifier = @"DeleteMeCellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
DeleteMeCellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:DeleteMeCellIdentifier];
}
NSInteger row = [indexPath row];
cell.textLabel.text = [_dataArray objectAtIndex:row];
return cell;
}
#pragma mark -
#pragma mark Table View Data Source Methods
//编辑样式
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert;
}
//添加一项
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSUInteger row = [indexPath row];
id addObject = [_dataArray objectAtIndex:row];
[self.removeList addObject:addObject];
}
//取消一项
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSUInteger row = [indexPath row];
id deleteObject = [_dataArray objectAtIndex:row];
[self.removeList removeObject:deleteObject];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。