表格视图中的多个单元格选择
Posted
技术标签:
【中文标题】表格视图中的多个单元格选择【英文标题】:Multiple cell selection In tableview 【发布时间】:2011-05-12 05:41:52 【问题描述】:我想将照片上传到 twitter、facebook 和 twit pic 等等。我把它放在数组中并显示在表格视图中。我正在使用 shareKit 。我编码就像如果我选择一个单元格(例如 Twitter)然后它将照片上传到 Twitter 我想选择多个单元格并在一个按钮上执行此发送操作(发送到选定的行项目)。我能够标记/取消标记单元格,但如何获取单元格的选定值。我不希望它处于表格的编辑模式..
代码:
- (void) tableView:(UITableView *)atableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if (cell.accessoryType == UITableViewCellAccessoryCheckmark)
cell.accessoryType = UITableViewCellAccessoryNone;
else
cell.accessoryType = UITableViewCellAccessoryCheckmark;
【问题讨论】:
***.com/questions/308081/… 和 ***.com/questions/3040894/… 的副本 @IphoneDeveloper,如果你得到了正确的答案,为什么不投赞成票呢? 【参考方案1】:让sourceArray
成为您用来填充表格视图的数组。
而selectedObjects
是一个被选中的对象数组,初始化为包含 0 个对象。它应该是一个(私有)类实例变量。
//NSMutableArray *selectedObjects = [[NSMutableArray array] retain];
- (void) tableView:(UITableView *)atableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
YouObjectType *object = [sourceArray objectAtIndex:indexPath.row]; //This assumes that your table has only one section and all cells are populated directly into that section from sourceArray.
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if (cell.accessoryType == UITableViewCellAccessoryCheckmark)
cell.accessoryType = UITableViewCellAccessoryNone;
[selectedObjects removeObject:object];
else
cell.accessoryType = UITableViewCellAccessoryCheckmark;
[selectedObjects addObject:object];
然后在你描述的按钮的发送动作方法中,使用selectedObjects
数组中的对象做需要的操作。
【讨论】:
将单元格与 cellforRowAtIndexPath 一起使用是个坏主意。好点是将所有项目选择状态保存在一个数组中并在此处选中/取消选中它。然后调用 reloadData。【参考方案2】:您也可以使用表格视图中的复选标记来制作它,例如..
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)path
UITableViewCell *cell = [tableView cellForRowAtIndexPath:path];
if (cell.accessoryType == UITableViewCellAccessoryCheckmark)
cell.accessoryType = UITableViewCellAccessoryNone;
else
cell.accessoryType = UITableViewCellAccessoryCheckmark;
【讨论】:
【参考方案3】:您可以在一个数组中管理它选择了哪个单元格,当您选择一行时,然后在 didSelectRowAtIndexPath 中根据上述条件更新该数组并在您上传图像时使用该数组。例如 - 你有一个数组,它有字典两个对象,键 @"image" 和 @"isSelected" 并用这个数组填充表,当你选择一行时,然后从数组中访问元素作为 indexPath.row 的字典对象并为键“isSelected”更新字典“true”或“flase”。
【讨论】:
您可以参考任何示例或链接吗?【参考方案4】:在didSelectRowAtIndexPath中获取indexPath.row,可以知道选择了哪个单元格。
【讨论】:
【参考方案5】:你可以使用这个 github repo JLSelectionTVC (https://github.com/nvrtdfrst/JLSelectionTVC) 来完成这个
【讨论】:
以上是关于表格视图中的多个单元格选择的主要内容,如果未能解决你的问题,请参考以下文章
自定义表格视图单元格中的 UITextField。点击单元格/文本字段时显示选择器视图