У меня есть такая же функция в одном из моих приложений, и я использовал приведенный ниже код для достижения этой цели, и у меня никогда не было таких проблем.
Прежде всего вам необходимо временно сохранить все значения textField в массиве. Сделайте массив таким.
arrTemp=[[NSMutableArray alloc]initWithObjects:[NSString stringWithFormat:@""],
[NSString stringWithFormat:@""],
[NSString stringWithFormat:@""],
[NSString stringWithFormat:@""],
[NSString stringWithFormat:@""],
[NSString stringWithFormat:@""],
[NSString stringWithFormat:@""],
[NSString stringWithFormat:@""],
[NSString stringWithFormat:@""],nil];
Тогда передайте все теги textField = indexPath.row;
После этого вам нужно заменить значение textField двумя способами ниже.
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
[arrTemp replaceObjectAtIndex:textField.tag withObject:textField.text];
}
-(void)textFieldDidEndEditing:(UITextField *)textField{
[arrTemp replaceObjectAtIndex:textField.tag withObject:textField.text];
}
Наконец, вам нужно установить это значение в методе источника данных cellForRowAtIndexPath. Так что всякий раз, когда пользователь прокручивает таблицу, он устанавливает предыдущее значение из временного массива. Вот так.
cell.txtEntry.text = [arrTemp objectAtIndex:indexPath.row];
Возможно, я забыл кое-какой код вставить здесь. Поэтому, если у вас возникнут проблемы, пожалуйста, дайте мне знать.