У меня есть простая таблица с пользовательскими ячейками, каждая из которых содержит текстовое поле. В cellForRowAtIndexPath: создать и инициализировать каждую ячейку в зависимости от indexPath.row:Проблема с значениями UITextField в пользовательской ячейке при прокрутке быстрого ios
case 0:
{
CellIdentifier = @"TextEditCell";
TextEditCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
}
[cell configureCellWithText: [self.valueArray objectAtIndex:0]
placeholder: @"value no.0"]
[cell performAction: @selector(saveValue0:)
forControlEvent: UIControlEventEditingDidEnd
inTarget: self];
return cell;
}
configureCellWithText: Заполнитель: наборы текста и заполнитель из TextField клетки. performAction: forControlEvent: inTarget ссылается непосредственно на textField и сохраняет значение textField для локального массива, чтобы быть точным при повторном использовании.
Проблема возникает, когда я быстро прокручиваю таблицу. Значения из разных ячеек копируются в другие ячейки и изменяют локальный массив. Я не могу понять, почему это происходит. У кого-нибудь есть идея? При необходимости я могу предоставить больше кода.
Варианты 1 и 2 не подходят для меня. Можете ли вы предоставить более подробную информацию о третьем? Я создал флаг в своем классе TextEditCell - как я должен обрабатывать его в 'cellForRowAtIndexPath:'? Кроме того, в моем коде каждая ячейка имеет тот же CellIdentifier - должен ли я диверсифицировать ее для каждой ячейки? Используется ли этот CellIdentifier в 'dequeueReusableCellWithIdentifier:' должен быть таким же, как в функции 'loadNibNamed:'? (отредактируйте свой первоначальный ответ - для следующих поколений) – deleteme