UITableview有多个选择?

时间:2015-11-14 13:17:12

标签: ios objective-c

我正在 UITableviewCell 中进行多项选择,我可以这样做,当选择的值添加到数组中并将其从数组中删除时会出现问题。我已从另一个数组中选择了值。我认为,以下情况我确实错了“我选择了多行,然后我逐个取消选择它会崩溃”随后崩溃 - [__ NSArrayM removeObjectAtIndex:]:索引1超出界限[0 .. 0]'

我能理解但无法解决的问题,无论如何都要在数组中获取选定的值?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *tableViewCell = [tableView cellForRowAtIndexPath:indexPath];
    [selectedValue addObject:[[listAns valueForKey:@"o_id"]objectAtIndex:indexPath.row]];
    tableViewCell.accessoryView.hidden = NO;
    tableViewCell.accessoryType = UITableViewCellAccessoryCheckmark;
}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *tableViewCell = [tableView cellForRowAtIndexPath:indexPath];
    [selectedValue removeObjectAtIndex:indexPath.row];
    //[selectedValue removeLastObject];
    tableViewCell.accessoryView.hidden = YES;
    tableViewCell.accessoryType = UITableViewCellAccessoryNone;
}

2 个答案:

答案 0 :(得分:1)

错误说 [__ NSArrayM removeObjectAtIndex:]:索引1超出边界[0 .. 0]',你试图删除索引超出范围。你的数组只包含一个值,但你试试删除第二个索引。

喜欢

为comapre创建一个公共数组,使用LOG.info('attr=%s, content=%s', dir(context), context.__dict__)

中的复选标记值
CellforRowAtIndex

答案 1 :(得分:1)

试试这个,在你的委托方法中有临时引用并检查

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *tableViewCell = [tableView cellForRowAtIndexPath:indexPath];
    NSString *val =[NSString stringWithFormat:@"%@",[[listAns valueForKey:@"o_id"]objectAtIndex:indexPath.row]];
    [selectedValue addObject:val];
    tableViewCell.accessoryView.hidden = NO;
    tableViewCell.accessoryType = UITableViewCellAccessoryCheckmark;
}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *tableViewCell = [tableView cellForRowAtIndexPath:indexPath];
    NSString *val =[NSString stringWithFormat:@"%@",[[listAns valueForKey:@"o_id"]objectAtIndex:indexPath.row]];
    [selectedValue removeObject:val];
    tableViewCell.accessoryView.hidden = YES;
    tableViewCell.accessoryType = UITableViewCellAccessoryNone;
}