在UITableview中选择多行

时间:2011-01-06 15:07:59

标签: iphone uitableview

我想在UITableview中选择多行,就像Apple在原生闹钟应用中所做的那样(参见图片alt text

我该怎么做?

到目前为止我看到的所有答案都是旧的(并说“不能做”)或参考本机邮件应用程序中的多行选择。那个方法不是我想要的,因为你必须首先进入“编辑”模式。我希望能够立即选择行。

希望有人可以提供帮助。

基督教

5 个答案:

答案 0 :(得分:31)

我发现最简单的方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;
}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryNone;
}

您可以通过调用

来查看选择了哪些单元格
NSArray *selectedCells = [self.tableView indexPathsForSelectedRows];

答案 1 :(得分:24)

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    if([tableView cellForRowAtIndexPath:indexPath].accessoryType == UITableViewCellAccessoryCheckmark){
       [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryNone;
    }else{
       [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;
    }

编辑:

您还必须使用映射已检查单元格的数组,并且必须在cellForRowAtIndexPath中验证是否应检查accessoryType。

答案 2 :(得分:12)

tableView.allowsMultipleSelection

这为我节省了数小时的麻烦。找到here

答案 3 :(得分:8)

“时钟”应用程序中的“已选定”行是具有UITableViewCellAccessoryCheckmark附件类型的单元格。

实现这一目标的可能步骤是:

  1. 为每行存储已选中/未选中状态。
  2. 在已检查行设置单元格cellForRowAtIndexPath:属性中的accessoryType方法UITableViewCellAccessoryCheckmark
  3. cellForRowAtIndexPath:中未检查的单元格中将单元格的accessoryType属性设置为UITableViewCellAccessoryNone
  4. 当选择单元格(轻敲)时,取消选择它,反转其检查状态并在该索引路径重新加载单元格

答案 4 :(得分:0)

如果您使用的是故事板,只需单击表视图,然后单击右侧面板上的属性检查器,设置"选择"财产到"多重选择"。我已使用Xcode版本8.2.1验证了这一点。