代码之家  ›  专栏  ›  技术社区  ›  Jonah

如何将表视图中的所有单元格设置为选中或未选中?

  •  0
  • Jonah  · 技术社区  · 15 年前

    我有一个清单在 UITableView 我有一个 UISegmentedControl 使用“全选”和“全选”选项。

    我想知道如何在查看表格时重置所有单元格。这个 [self.tableView reloadData]; 函数似乎不起作用。

    3 回复  |  直到 12 年前
        1
  •  3
  •   Alex Reynolds    15 年前

    你可以留一个 NSMutableArray* 打电话 checkmarks 那家商店 NSNumber 实例。

    集合 +numberWithBool: 在每个元素上 复核标记 作为 YES 例如,将所有行标记为选中。

    请注意,这只是一个数据模型存储。因此,您必须实际读取 复核标记 在你 -tableView:cellForRowAtIndexPath: 方法设置每行的选中标记状态 accessoryType ,例如:

    cell.accessoryType = ([[checkmarks objectAtIndex:indexPath.row] boolValue] == YES) ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone;
    

    当您以编程方式更改 复核标记 ,然后你可以打电话 [tableView reloadData] 以便表视图行的状态反映 复核标记 .

        2
  •  3
  •   Donovan Voss    15 年前

    reloadData 只设置带有返回内容的表格单元格 tableView:cellForRowAtIndexPath: .如果返回选中的单元格,它将显示为选中。 UITableView 不维护任何类型的“选中”或“未选中”状态本身。

    它确实有“选中”和“未选中”两种状态,但是,根据苹果的hig,你不应该用它来表示选择。这些状态是指当您点击一行时获得的突出显示,并且表中只有一行应该被“选中”。相反,您应该使用单元格的附件视图或某些自定义子视图来显示复选标记。

    在您将表单元格从 表视图:cellForRowatindexPath: ,确保将附件视图显式设置为 UITableViewCellAccessoryCheckmark UITableViewCellAccessoryNone . 否则,它将具有上次显示时的任何附件视图。

        3
  •  0
  •   malhal Benzy Neez    12 年前

    试试这个:

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