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 に答える