UISwitch меняет ячейку при прокрутке таблицы

У меня странная проблема (по крайней мере, на мой взгляд). Когда я добавляю UISwitch в мое табличное представление, переключатель автоматически меняет ячейку, когда пользователь прокручивает табличное представление. Ниже приведен код того, как я создаю UIS-переключатель для просмотра таблицы.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

        //NSLog(@"This is what we are looking for %@    %@", checkUsername, checkPassword);
        // Configure the cell...
    NSDictionary *dictionary = [listOfItems objectAtIndex:indexPath.section];
    NSArray *array =[dictionary objectForKey:@"Settings"];
    NSString * cellValue = [array objectAtIndex:indexPath.row];

    static NSString *CellIdentifier = @"Cell";
    NSUInteger section = [indexPath section];
    NSUInteger row = [indexPath row];
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    cell.accessoryView = nil;


    if (!cell) {

        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
        cell.textLabel.adjustsFontSizeToFitWidth = YES;
            //switcher.on = [[NSUserDefaults standardUserDefaults]boolForKey:@"Settings"];

        if (section == 1)
        {

            UISwitch *switchView = [[UISwitch alloc] init];
            cell.accessoryView = switchView;
            [switchView setOn:YES animated:NO];
            [switchView setTag:[indexPath row]];
            [switchView addTarget:self action:@selector(switchWasChangedFromEnabled:) forControlEvents:UIControlEventValueChanged];
                //[self.tableView reloadData];
            [switchView release];
        }

    }
    return cell;
}

Может кто-нибудь сообщить мне, почему переключатели продолжают выходить из обозначенных ячеек, а также о возможном решении.

Джастин Галлахер предложил это:

Это происходит потому, что вы кешируете свои клетки и повторно используете их. Иногда ячейка с выключателем повторно используется в другом месте. Попробуйте установить другой идентификатор для ячейки с помощью переключателя.

Но может ли кто-нибудь сказать мне, как я могу установить разные идентификаторы для каждой ячейки?

Приветствия,

iSee

1
задан iSee 5 September 2010 в 15:43
поделиться