我的代码完全符合我的要求,但现在我无法取消选中已检查的单元格。 检查代码
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
int z=0;
if (indexPath.row==0)
{
NSArray *visibleCells = [tableView visibleCells];
for (UITableViewCell *cell in visibleCells)
{
if (z==0)
{
[cell setAccessoryType:UITableViewCellAccessoryCheckmark];
z++;
}
else
{
[cell setAccessoryType:UITableViewCellAccessoryNone];
z++;
}
}
}
else
{
UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
self.checkedIndexPath = indexPath;
[tableView reloadData];
}
}
在此我已经完成了编码以检查多行,但如果用户选择了第一行,则取消选中所有其他行。 这对我来说很完美。
但是我现在想要检查前面检查过的行。 提前谢谢。
答案 0 :(得分:2)
检查我的代码 您可以轻松地在MutuableArray中添加多个值,如果您取消选中,那么它将通过索引路径删除
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSMutableArray *index2=[[NSMutableArray alloc]init];
UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
if (indexPath.section == 0){
if ([selectedCell accessoryType] == UITableViewCellAccessoryNone) {
[selectedCell setAccessoryType:UITableViewCellAccessoryCheckmark];
[self.click insertObject:[service_shop objectAtIndex:indexPath.row]atIndex:0];
NSLog(@"-%@--%@--",click);
[index2 addObject:indexPath];
}else{
[selectedCell setAccessoryType:UITableViewCellAccessoryNone];
[click removeObject:[service_shop objectAtIndex:indexPath.row] ];
NSLog(@"--%@--%@---",click);
[index2 removeObject:indexPath];
}
[_tableView reloadData];
}
}
希望这项工作
由于
答案 1 :(得分:1)
如果我理解正确,您想恢复以前的选择。要做到这一点,你显然必须将选择存储在某个地方。所以为它创建一个类变量:
@implementation YourViewController
{
NSArray *selectedIBackup;
}
现在,当选择第一行时,备份当前选择:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row==0) {
selectedIBackup = _table.indexPathsForSelectedRows;
for (int i=1; i<self.rowsCount; i++) {
[_table deselectRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0] animated:NO scrollPosition:UITableViewScrollPositionNone];
}
}
}
现在恢复选择:
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row==0) {
for (NSIndexPath *indexP in selectedIBackup) {
[_table selectRowAtIndexPath:indexP animated:NO];
}
}
}