UITableViewCellAccessoryCheckmark问题,只检查一行检查许多单元格

时间:2013-04-02 04:43:03

标签: iphone ios objective-c uitableview

我有一个tableview,包含很多行,大约有60行,我希望用户能够checkuncheck的行数为UITableViewCellAccessoryCheckmark。他要。问题是,当我检查某个cell时,该位置的所有其他单元格也将被检查。例如,如果我检查第5行,行号15,25,35等等也将获得UITableViewCellAccessoryCheckmark,我不希望这种情况发生。我需要检查的行只是用户真正选择的行。这是我的didSelectRowAtIndexPath方法

的代码
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{ 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

    Materia *current = [Manejador MateriasEnListaAtIndex:indexPath.row ];
    if(cell.accessoryType == UITableViewCellAccessoryCheckmark){
        cell.accessoryType = UITableViewCellAccessoryNone;
        [ManejadorVistas EliminarMateria:current];
    }
    else{
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
        [ManejadorVistas AgregarMateria:current];
    }
}

2 个答案:

答案 0 :(得分:1)

dequeueReusableCellWithIdentifier设置为nil,如下所示,然后尝试使用它......

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];

也会在这种情况下编写你的代码..

if (cell == nil) {

    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:nil] autorelease];

     // write your code here....
}

答案 1 :(得分:1)

在你的cellForRowAtIndexPath

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];

if (cell == nil) {

    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"cell"];

     // write your code here....
}
Materia *current = [Manejador MateriasEnListaAtIndex:indexPath.row ];

//While reusing we have to check whether ManejadorVistas contains the object. 
//Because you would have added it inside didSelect Delegate

if([ManejadorVistas containsObject:current]) 
{
   cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else
{
   cell.accessoryType = UITableViewCellAccessoryNone;
}