在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中选择多个表格视图单元格的本机方式[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在表格视图中更改单元格的背景行为不符合预期[关闭]

以编程方式将按钮添加到表格视图单元格[关闭]

以编程方式向表格视图单元格添加按钮[关闭]

Swift - 表格视图单元格内的单击按钮不会在该单元格的功能处调用确实选择行

iOS:自定义表格视图单元格中的约束

在我的表格视图中,我没有只有单元格的部分,所以如何在 ios 目标 c 中重新加载表格视图?