0

メソッドにチェックインしdidSelectRowますが、テーブルを上に移動すると、チェックが削除され、新しいセルが作成されると思います

チェックされたセルがチェックされていないセルに置き換えられないように、一意のセルを使用するにはどうすればよいですか。

- (void)tableAlert:(SBTableAlert *)tableAlert didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    NSLog(@"MY INDEX PATH IS %@", indexPath);

    NSString *email = [allEmails objectAtIndex:indexPath.row];

    if (tableAlert.type == SBTableAlertTypeMultipleSelct) {

        UITableViewCell *cell = [tableAlert.tableView cellForRowAtIndexPath:indexPath];

        if (cell.accessoryType == UITableViewCellAccessoryNone){
             [cell setAccessoryType:UITableViewCellAccessoryCheckmark];
             [selectedEmail addObject:email];
        }

        else{
            [cell setAccessoryType:UITableViewCellAccessoryNone];
            [selectedEmail removeObject:email];

        }

       [tableAlert.tableView deselectRowAtIndexPath:indexPath animated:YES];
 }

     NSLog(@"Final Array is %@", selectedEmail);
 }


- (UITableViewCell *)tableAlert:(SBTableAlert *)tableAlert cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell;

    // NSString *identifier = [NSString stringWithFormat:@"%d%d", indexPath.section, indexPath.row];


if (tableAlert.view.tag == 0 || tableAlert.view.tag == 1) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
} else {
    // Note: SBTableAlertCell
    cell = [[SBTableAlertCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
}

//[cell.textLabel setText:[NSString stringWithFormat:@"Cell %d", indexPath.section]];

NSString *email = [allEmails objectAtIndex:indexPath.row];

cell.textLabel.text = [NSString stringWithFormat:@"%@", email];


UIFont *myFont = [ UIFont fontWithName: @"Arial" size: 14.0 ];
cell.textLabel.font  = myFont;

return cell;
}
4

1 に答える 1

0

選択した電子メールをselectedEmail配列に既に保存しているため、 cellForRowAtIndexPathメソッドでそれを利用してチェックマークを表示できます。

NSString *email = [allEmails objectAtIndex:indexPath.row];
cell.textLabel.text = [NSString stringWithFormat:@"%@", email];
if ([selectedEmail indexOfObject:email] != NSNotFound) {
    [cell setAccessoryType:UITableViewCellAccessoryCheckmark];
}
else {
    [cell setAccessoryType:UITableViewCellAccessoryNone];
}

このようにセルを再利用しても問題ありません。

于 2013-07-16T07:46:39.597 に答える