1

我想将复选标记作为附件类型应用于适用视图中的选定项目。但是所有重复使用的单元格都会出现复选标记。我们怎样才能避免这个问题?代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        if ([[[data objectAtIndex:indexPath.row] ringtone_id] isEqualToString:selId] ) {
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
        }

    }

    // Configure the cell...

    cell.textLabel.text = [[[data objectAtIndex:indexPath.row] ringtone_name] stringByDeletingPathExtension];
    return cell;
}
4

3 回答 3

1

尝试这个 :

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;


    }

    // Configure the cell...

     if ([[[data objectAtIndex:indexPath.row] ringtone_id] isEqualToString:selId] ) {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
     } else {
       cell.accessoryType = UITableViewCellAccessoryNone;
     }

    cell.textLabel.text = [[[data objectAtIndex:indexPath.row] ringtone_name] stringByDeletingPathExtension];
    return cell; }

希望这会帮助你。

于 2013-03-25T08:42:01.857 回答
0

您必须添加else案例以取消标记您不想标记的单元格,如下所示:

if ([[[data objectAtIndex:indexPath.row] ringtone_id] isEqualToString:selId] ) {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
    cell.accessoryType = UITableViewCellAccessoryNone;
}
于 2013-03-25T08:41:51.583 回答
0

试试这种方式:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }

    // Configure the cell...

        if ([[[data objectAtIndex:indexPath.row] ringtone_id] isEqualToString:selId] ) {
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
        } else {
            cell.accessoryType = UITableViewCellAccessoryNone;
        }

    cell.textLabel.text = [[[data objectAtIndex:indexPath.row] ringtone_name] stringByDeletingPathExtension];
    return cell;
}
于 2013-03-25T08:42:03.183 回答