【问题标题】:Checking and unchecking UITableViewCells with a click of a UIToolBarButton通过单击 UIToolBarButton 来检查和取消选中 UITableViewCells
【发布时间】:2011-11-06 23:21:38
【问题描述】:

如何在所有单元格旁边打上复选标记,然后单击UIToolBarButton 删除复选标记?这可能吗?

我尝试遍历表格视图中加载的单元格数量,但我不知道如何将附件类型设置为所有这些单元格的复选标记,然后在所有这些单元格都被选中时返回为无?

【问题讨论】:

  • 只是为了让你知道,我写了一个 IBAction 并将它链接到工具栏按钮。使用 for 循环我计算了屏幕上加载的 tableview 中的单元格数量,但问题是我不知道如何将 indexPath 设置为每个单元格,然后将 cell.accessorytype 属性设置为复选标记或无。

标签: iphone ios uitableview nsindexpath


【解决方案1】:

不要直接更改单元格 - 更改用于填充单元格的数据,然后告诉表格重新加载它的数据。

因此,您将需要以下内容:

  • 一种在单元格所代表的数据中存储表示“检查状态”的方法;

  • 一种在 -tableView:cellForRowAtIndexPath: 方法中根据相关单元格所代表的项目的“已检查状态”的值为单个单元格设置附件的方法

对于一个普通的 UITableViewCell,你可以这样设置附件:

cell.accessoryType = item.isChecked ? UITableViewAccessoryCheckmark : UITableViewAccessoryNone;

【讨论】:

  • Caleb 我明白你的意思。这里的情况相当复杂。我正在 cellForRowAtIndexPath 方法中进行检查和取消检查(即,单击时附件更改为已检查,如果已检查,则它变为未检查,反之亦然)在 cellForRowAtIndexPath 方法中。我可以编写一个单独的函数来遍历整个我的 tableview 并没有得到选中状态(因为它是否选中对我来说并不重要),只需取消选中所有这些..
  • 再一次,不,您不希望“遍历表格”。您想要遍历由表表示的数据。在大多数情况下,表格只包含您可以看到的单元格——从一端滚动的单元格将被回收并用于即将从另一端滚动的单元格。如果您尝试通过更改单元格来为给定行设置某种状态,那么一旦单元格不再可见,该更改就会被遗忘。如果您更改数据并让它驱动单元格的外观,您的更改将被正确记住。
  • 首先,如果您更改数据,我不明白您在这里想说什么......我很确定我不需要更改我的数据来做一个简单的附件类型更改,因为我没有保存任何这些数据的任何地方。其次,我很确定你没有理解我的情况。先生,在任何情况下,我都不想变得粗鲁。只是我对 iPhone 编程比较陌生。
  • 我需要完成的步骤 - 伪代码 1.-(IBAction) reset{(对于 tableview 中的所有单元格){ 将附件类型设置为 None } 2.-(IBAction)SelectAll{(对于表格视图中的所有单元格){ 将附件类型设置为 checkMark } 这就是我想要的。如果你能帮我解决这个问题,那真是太好了。谢谢你的时间:)
  • 你怎么知道在每个单元格中放什么?通常,有一个数组或类似的结构包含表中表示的项目。如果你有,那就是你想要存储行的选中/未选中状态的地方。如果您的表格仅包含静态单元格(单元格内容由代码中内置的数据确定),您可能需要创建一个数组来存储选中/未选中状态。如果您仍然卡住,请尝试发布一些代码,例如您的 -tableView:cellForRowAtIndexPath:
【解决方案2】:

试试这个:

    for(UITableViewCell* cell in tableAlert.tableView.visibleCells){
        cell.accessoryType = UITableViewCellAccessoryChecked;
    }

您还需要更新数据集,以便在滚动单元格时在 cellForRow 中获得正确的附件。

【讨论】:

    猜你喜欢
    • 2023-02-19
    • 2016-07-04
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 2012-06-08
    相关资源
    最近更新 更多