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