在iOS中选择多个表格视图单元格的本机方式[关闭]
Posted
技术标签:
【中文标题】在iOS中选择多个表格视图单元格的本机方式[关闭]【英文标题】:native way to select multiple table view cells in iOS [closed] 【发布时间】:2013-12-20 03:37:40 【问题描述】:我有一个用例,我需要在 uitableview 中选择多个 tableviewcells。选择单元格后,我将使用选择的结果进行处理。
如何以标准的ios/UIKit
方式完成此操作?我将使用哪些控件?
【问题讨论】:
“我将使用哪些控件”是什么意思? 你看过 UITableView 的文档吗? @Atma,看看这篇文章中的答案,或者如 rmaddy 所说,看看文档。这是链接人***.com/questions/18176907/… 不知道大惊小怪的。这似乎是许多应用程序需要的情况,我想知道可可方法。我认为搁置此事会剥夺社区的一些有价值的信息。 【参考方案1】:为了处理这种情况,您需要一个额外的数组来保存选定的项目。
在您的didSelectRowAtIndexPath
中,您需要根据当前状态(选择/取消选择)推送/弹出所选项目
实现如下:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if(cell.accessoryType == UITableViewCellAccessoryNone)
cell.accessoryType = UITableViewCellAccessoryCheckmark;
[selectedItemsArray addObject:[yourDataSourceArray objectAtIndex:indexPath.row]];
else
cell.accessoryType = UITableViewCellAccessoryNone;
[selectedItemsArray removeObject:[yourDataSourceArray objectAtIndex:indexPath.row]];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
另外你还需要修改cellForRowAtIndexPath
比如:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
NSString *cellIdent = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdent];
if(cell == nil)
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdent];
//Adding items to cell
if([selectedItemsArray containsObject:[yourDataSourceArray objectAtIndex:indexPath.row]])
cell.accessoryType = UITableViewCellAccessoryCheckmark;
else
cell.accessoryType = UITableViewCellAccessoryNone;
return cell;
您可以为选定状态使用自定义图像,而不是显示原生 UITableViewCellAccessoryCheckmark
。你可以参考这个教程custom accessory-view。
【讨论】:
为什么要使用另一个数组?只需向您的模型添加一个标志,一旦用户选择了相应的行,该标志就会设置。 @Till:是的,这也是一个很好的解决方案。我使用数组轻松管理所选项目。如果用户需要对所有选定的对象做某事。在数组中很容易。如果更改在模型对象中。您需要先找到所有选定的对象,然后对其进行修改。但我没想到,这是一个绝妙的主意。谢谢分享!!!以上是关于在iOS中选择多个表格视图单元格的本机方式[关闭]的主要内容,如果未能解决你的问题,请参考以下文章