在单个部分中循环静态单元格。 UITableView的

时间:2013-05-16 10:14:16

标签: iphone ios ios6

我有一个静态的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];
}

2 个答案:

答案 0 :(得分: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部分中的所有单元格

答案 1 :(得分: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];
}