iOS开发UI篇-tableView在编辑状态下的批量操作(多选)
先看下效果图
直接上代码
#import "MyController.h" @interface MyController ()
{
UIButton *button;
} @property(nonatomic,strong)NSMutableArray *array;//数据源 @property (nonatomic,strong)NSMutableArray *selectorPatnArray;//存放选中数据 @end @implementation MyController - (void)viewDidLoad {
[super viewDidLoad]; //添加数据源
for (int i = ; i < ; i++) {
NSString *str = [NSString stringWithFormat:@"第%d行",i + ];
[self.array addObject:str];
} button = [UIButton buttonWithType:(UIButtonTypeCustom)];
[button setTitle:@"选择" forState:(UIControlStateNormal)];
[button setTitleColor:[UIColor blackColor] forState:(UIControlStateNormal)];
button.frame = CGRectMake(, , , ); [button addTarget:self action:@selector(selectMore:) forControlEvents:(UIControlEventTouchUpInside)]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:button]; } - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return ;
} - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.array.count;
} - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *Identifier = @"myCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:Identifier];
if (!cell) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:Identifier];
}
cell.textLabel.text = self.array[indexPath.row]; cell的selectionStyle不要设置为UITableViewSelectionStyleNone return cell;
} - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{ return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert;
} - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
//选中数据
[self.selectorPatnArray addObject:self.array[indexPath.row]]; } - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{
//从选中中取消
if (self.selectorPatnArray.count > ) { [self.selectorPatnArray removeObject:self.array[indexPath.row]];
} } #pragma mark - 点击事件 - (void)selectMore:(UIBarButtonItem *)action{
if ([button.titleLabel.text isEqualToString:@"选择"]) {
//移除之前选中的内容
if (self.selectorPatnArray.count > ) {
[self.selectorPatnArray removeAllObjects];
}
[button setTitle:@"确认" forState:(UIControlStateNormal)];
//进入编辑状态
[self.tableView setEditing:YES animated:YES];
}else{ [button setTitle:@"选择" forState:(UIControlStateNormal)];
//对选中内容进行操作
NSLog(@"选中个数是 : %lu 内容为 : %@",(unsigned long)self.selectorPatnArray.count,self.selectorPatnArray);
//取消编辑状态
[self.tableView setEditing:NO animated:YES]; }
} #pragma mark -懒加载 -(NSMutableArray *)array{
if (!_array) {
_array = [NSMutableArray array];
}
return _array;
} - (NSMutableArray *)selectorPatnArray{
if (!_selectorPatnArray) {
_selectorPatnArray = [NSMutableArray array];
}
return _selectorPatnArray;
}
如果要把tableView在非编辑状态下不让点击,设置下这个属性,就OK了.
@property (nonatomic) BOOL allowsSelection NS_AVAILABLE_IOS(3_0); // default is YES. Controls whether rows can be selected when not in editing mode
如果在某些情况下需要全选,可以按照这个思路:
for (int i = ; i < self.array.count; i++) {
NSIndexPath *path = [NSIndexPath indexPathForRow:i inSection:];
UITableViewCell *cell = (UITableViewCell *)[self.tableView cellForRowAtIndexPath:path];
cell.selected = YES;
[self.selectorPatnArray addObject:self.array[i]];//添加到选中列表
}
这只是个人想法,欢迎指出不足......
iOS开发UI篇-tableView在编辑状态下的批量操作(多选)的更多相关文章
- iOS开发UI篇—UITableview控件基本使用
iOS开发UI篇—UITableview控件基本使用 一.一个简单的英雄展示程序 NJHero.h文件代码(字典转模型) #import <Foundation/Foundation.h> ...
- iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建
iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建 一.实现效果 说明:该示例在storyboard中使用动态单元格来完成. 二.实现 1.项目文件结构 ...
- iOS开发UI篇—核心动画(UIView封装动画)
iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画 ...
- iOS开发UI篇—核心动画(关键帧动画)
转自:http://www.cnblogs.com/wendingding/p/3801330.html iOS开发UI篇—核心动画(关键帧动画) 一.简单介绍 是CApropertyAnimatio ...
- iOS开发UI篇—核心动画(基础动画)
转自:http://www.cnblogs.com/wendingding/p/3801157.html 文顶顶 最怕你一生碌碌无为 还安慰自己平凡可贵 iOS开发UI篇—核心动画(基础动画) iOS ...
- iOS开发UI篇—核心动画简介
转自:http://www.cnblogs.com/wendingding/p/3801036.html iOS开发UI篇—核心动画简介 一.简单介绍 Core Animation,中文翻译为核心动画 ...
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
本文转自 :http://www.cnblogs.com/wendingding/p/3761730.html ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布 ...
- iOS开发UI篇—Quartz2D使用(绘制基本图形)
iOS开发UI篇—Quartz2D使用(绘制基本图形) 一.简单说明 图形上下文(Graphics Context):是一个CGContextRef类型的数据 图形上下文的作用:保存绘图信息.绘图状态 ...
- iOS开发UI篇—Button基础
iOS开发UI篇—Button基础 一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状 ...
随机推荐
- 放在jsp头部的代码
String path = request.getContextPath(); String basePath = request.getScheme()+"://"+reques ...
- bzoj3878
当初只会暴力,现在差不多觉得水了显然离线处理,对输入的数排序然后会发现不管怎么修改都是结果总是单调不降的对于每次处理,我们只要找到那段越界的即可显然上线段树,话说jsoi这么喜欢线段树?下面在bzoj ...
- visual studio 2012更换皮肤、功能添加
首先在vs2012的菜单:工具->扩展和更新,打开扩展和更新窗口,点击左侧“联机”,搜索栏里面输入Theme Editor.然后点击按钮,安装之后,在工具->选项->环境常规 面板上 ...
- 2015年NEUACM一月月赛题解
A Money , money 时间限制: 1 Sec 内存限制: 128 MB 提交: 15 解决: 14 题目描述 Small K seen recently stock market rea ...
- Go Hello World!
有些事应该坚持去做 当你半途而废的时候意味着你又要重新开始.那么 Golang Hello world! Java Android 新手 学习 Golang First Day ! go 语言下载: ...
- 关于mysql的error-based injection payload
今天用sqlmap扫一个网站,想得到一个表的所有列名,注意到sqlmap用到的一个error-based payload的: 1 AND (SELECT 3174 FROM(SELECT COUNT( ...
- 【CSS】Beginner1:Applying CSS
CSS(Cascading Style Sheets) 1.Applying CSS Three ways: 1.In-line 2.Internal 3.External 2.In-line ...
- YUV转灰度
转载自:http://blog.csdn.net/sxjk1987/article/details/7470545 标准的V4L2 API http://v4l.videotechnology.com ...
- Replacing JNI Crashes by Exceptions on Android
http://blog.httrack.com/blog/2013/08/23/catching-posix-signals-on-android/ To Report Or Not To Repor ...
- A Tour of Go Arrays
The type [n]T is an array of n values of type T. The expression var a [10]int declares a variable a ...