UITableViewCell 添加 checkbox 多选

由于网络原因看不到效果,我的是左边是一个大分类的cell,右边是一个小分类的cell,小分类的支持多选然后传给上一个界面,这里传值可以用block

其实说到底就是cell增加一个手势,用这个手势判断是不是选中状态,当点击cell的时候,判断cell上面的数据(这里我是定义了一个可变数组selectArray,一进入这个页面开始加载数据时这个数组就初始化,并用数组初始化,初始化的个数为父类tableview的数组个数,在定义一个int行数据,只要点击了父类tableview就记录这个cell,如果不记录其他子类tableview相同位置也会出现选中状态)当点击的时候,如果selectArray里面没有当前cell上的数据,就追加,如果有就删除,indexPath是cell里面记录哪段哪行的,如(0-0)

我都是在.m文件中操作的

int           lastSelectBigTableViewRow;

@property(nonatomic,strong)NSMutableArray * bigDataArray;

@property(nonatomic,strong)NSMutableArray * smallDataArray;

@property(nonatomic,strong)NSMutableArray * selectArray;

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"ID"];

if (cell == nil) {

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ID"];

}

cell.selectionStyle = UITableViewCellSelectionStyleNone;

cell.textLabel.text = [self.smallDataArray[indexPath.row] objectForKey:@"category_name"];

cell.textLabel.textAlignment = NSTextAlignmentLeft;

cell.textLabel.textColor = [UIColor grayColor];

if ([[self.selectArray objectAtIndex:lastSelectBigTableViewRow] containsObject:indexPath]) {

cell.imageView.image = [UIImage imageNamed:@"cur-photo-blue.png"];

}

else

{

cell.imageView.image = [UIImage imageNamed:@"cur.png"];

}

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleChecking:)];

[cell.imageView addGestureRecognizer:tap];

cell.imageView.userInteractionEnabled = YES;

return cell;

}

}

return nil;

}

- (void) handleChecking:(UITapGestureRecognizer *)tapRecognizer {

CGPoint tapLocation = [tapRecognizer locationInView:_subTableView];

NSIndexPath *tappedIndexPath = [_subTableView indexPathForRowAtPoint:tapLocation];

if ([[self.selectArray objectAtIndex:lastSelectBigTableViewRow] containsObject:tappedIndexPath]) {

[[self.selectArray objectAtIndex:lastSelectBigTableViewRow]  removeObject:tappedIndexPath];

}

else {

[[self.selectArray objectAtIndex:lastSelectBigTableViewRow]  addObject:tappedIndexPath];

}

[_subTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:tappedIndexPath] withRowAnimation: UITableViewRowAnimationFade];

}

//这个是一个保存按钮,是我要取subView上的值传给上一个界面

- (void)saveClick{

//self.selectArray

NSMutableString * str = [[NSMutableString alloc] init];

for (int i = 0; i < [self.selectArray count]; i++) {

if ([[self.selectArray objectAtIndex:i] count] > 0) {

//[str appendString:[[self.bigDataArray objectAtIndex:i] objectForKey:@"category_name"]];

for (int j = 0; j < [[self.selectArray objectAtIndex:i] count]; j++) {

NSIndexPath * path = [[self.selectArray objectAtIndex:i] objectAtIndex:j];

NSMutableArray * tempArray = [self.bigDataArray[i] objectForKey:@"items"];

NSDictionary * dic = [tempArray objectAtIndex:[path row]];

[str appendString:[dic objectForKey:@"category_name"]];

[str appendString:@","];

}

}

}

if (self.myBlock) {

self.myBlock(str);

}

[self.navigationController popViewControllerAnimated:YES];

}

参考:http://stackoverflow.com/questions/3666629/how-to-add-checkboxes-to-uitableviewcell

时间: 2024-10-12 22:53:14

UITableViewCell 添加 checkbox 多选的相关文章

UITableViewCell 添加 checkbox 多选 (二)

其实苹果原生就有cell的多选,不过做出来的效果是这样的 我的大概逻辑是这样考虑的 (一)先考虑右上角button的事情,平时是delete,当cell时编辑状态就换成done (二)考虑cell的编辑状态 其实cell有一个函数可以直接对cell进行编辑 - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{

javascript如何动态添加checkbox复选框

javascript如何动态添加checkbox复选框:在实际应用中可能需要动态的添加复选框,下面就简单介绍一下如何实现此效果.单纯的创建一个复选框是很容易的,代码如下: var oCheckbox=document.createElement("input"); oCheckbox.setAttribute("type","checkbox"); oCheckbox.setAttribute("id","mayi&

通过编写串口助手工具学习MFC过程&mdash;&mdash;(五)添加CheckBox复选框

通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个串口助手再次熟悉一下MFC,并做了一下记录,以便方便以后查阅.做的过程中多是遇到问题直接百度和谷歌搜索来的,所以很多都是不求甚解,知其然不知其所以然.另外做此工具只是为了熟悉了解,许多功能还没有完善!(开发工具VS2008) (五)添加CheckBox复选框 属性:Caption用于显示文本内容.

C#ListView控件添加Checkbox复选框并获取选中的数目,检查checkbox是否勾选

原地址:http://blog.csdn.net/lucky51222/article/details/41892429 1.添加复选框:listView1.CheckBoxes = true; 2.选中listview并获取选中的数目: [csharp] view plain copy private void listView1_ItemChecked(object sender, ItemCheckedEventArgs e) { e.Item.Selected = e.Item.Chec

点击文本框弹出可供选择的checkbox复选框代码实例

点击文本框弹出可供选择的checkbox复选框代码实例:本章节分享一段代码实例,它能够点击文本框的时候,能够弹出下拉的checkbox复选框,选中复选框就能够将值写入文本框中,可能在实际应用中的效果没有这么直白简单,不过可以作为一个例子演示,以便于学习者理解和扩展.代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author&qu

js做全选,用一个checkbox复选框做多个checkbox复选框的全选按钮,有一个复选框未被选择时,全选按钮的checked就为false

用一个checkbox复选框做多个checkbox复选框的全选按钮,有一个复选框未被选择时,全选按钮的checked就为false,当所有checkbox都被选中时,全选按钮也被选中. 详解: 有两种方式使<input type="checkbox" />中的复选框被选中. 方法一:直接在HTML行间中添加checked属性.   eg:<input type="checkbox" checked /> 方法二:使用javascript使in

【转载】checkbox复选框的一些深入研究与理解

转载来自:原创文章,转载请注明来自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com] 一.一开始的唠叨最近忙于开发,自淫于项目的一步步完工,心浮躁了.舍近而求远,兵家之大忌.我是不是应该着眼于眼前的东西,好好的静下心来,超过一般人的沉静与沉浸,研究最基本的东西呢?这番思考,让我找到了一些方向. 对于checkbox,从我开始接触HTML开始,陆陆续续也研究过好多次,然而多是零星的知识点的累加,或是掌握了些表象的东西,是否深入核心,是否深入其本质,是否有了完善的总结,是否

jquery checkbox全选,全不选,反选方法,jquery checkbox全选只能操作一次

jquery checkbox全选,全不选,反选方法, jquery checkbox全选只能操作一次, jquery checkbox全选只有第一次成功 Js代码  下载 /** * 全选 * 对于Jquey1.7.2+版本,使用attr会造成只能操作一次. * 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. * 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. * @param checkName */ function checkAll(chec

转 纯CSS设置Checkbox复选框控件的样式

Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至可以让它看起来一点也不像复选框. 在本教程中,我们将创建5个不同的选择框,你可以在你的网站上使用它. css-style-checkboxes 查看演示,可以看到我们将要创建的复选框样式. 演示地址 首先,需要添加一段CSS隐藏所有的Checkbox复选框,下面我们会改变它的外观.要做到点需要添加一