1

我有一个静态 UITableView,有很多部分。其中一个包含许多单元格,这些单元格将是选项(单击以选中标记)。

我有一个 NSMutableArray (self.checkedData),其中包含所选行的行 ID。我不知道如何循环遍历特定部分中的单元格。检查该行是否在数组中,如果是则添加复选标记。因此,当加载视图时,可以从 coredata 中提取选项,然后标记选定的行。

我目前有这个用于处理添加复选标记。这工作正常。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // determine the selected data from the IndexPath.row

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    // determine the data from the IndexPath.row

    if ( ![self.checkedData containsObject:[NSNumber numberWithInt:indexPath.row]] )
    {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
        [self.checkedData addObject:[NSNumber numberWithInt:indexPath.row]];
    } else {
        cell.accessoryType = UITableViewCellAccessoryNone;
        [self.checkedData removeObject:[NSNumber numberWithInt:indexPath.row]];
    }    

    [tableView reloadData];
}
4

2 回答 2

4

您可以像这样在特定部分中获取所有单元格的数组:

NSUInteger section = 0;
NSInteger numberOfRowsInSection = [self.tableView numberOfRowsInSection:section];

NSMutableArray *cellsInSection = [NSMutableArray arrayWithCapacity:numberOfRowsInSection];

for (NSInteger row = 0; row < numberOfRowsInSection; row++)
{
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:section];

    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

    [cellsInSection addObject:cell];
}

cellsInSection数组现在包含第 0 部分中的所有单元格

于 2013-05-16T10:25:04.173 回答
1

在 viewDidLoad 中可能是这样的?:

for(NSIndexPath *thisIndexPath in [self.tableView indexPathsForVisibleRows]) {
  UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
  if ( ![self.checkedData containsObject:[NSNumber numberWithInt:indexPath.row]] ) {
      cell.accessoryType = UITableViewCellAccessoryCheckmark;
      [self.checkedData addObject:[NSNumber numberWithInt:indexPath.row]];
    } else {
      cell.accessoryType = UITableViewCellAccessoryNone;
      [self.checkedData removeObject:[NSNumber numberWithInt:indexPath.row]];
    }
   [self.tableView reloadData];
}
于 2013-05-16T10:24:10.777 回答