Вы, вероятно, используете механизм удаления очереди для заполнения UITableView его ячейками.Это означает, что ячейка, которая была выделена и находится за пределами экрана, может быть повторно использована и заполнена другим содержимым.Это экономит затраты производительности при выделении новой ячейки для каждой строки.Таким образом, даже представления таблиц с большим количеством ячеек могут работать очень хорошо, потому что им приходится иметь дело, скажем, с шестью или семью ячейками одновременно.
И это, вероятно, также то, что происходит с вами.Ваши ячейки прокручиваются за пределы экрана и теперь могут свободно использоваться новыми ячейками, появляющимися на экране (отображая различное содержимое).Таким образом, у вас будет другое название и другое (новое) текстовое поле.Таким образом, вам нужно сохранить свои данные где-нибудь, если ячейка прокручивается за пределы экрана.Например, вы можете слушать UITextFieldTextDidChangeNotification
.
Зарегистрируйте свой контроллер в качестве наблюдателя, например, в -viewDidLoad
: [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector (textFieldChanged :) name: UITextFieldTextDidChangeNotification object: textField]
И затемреализуйте свой метод, в данном случае textFieldChanged:
, который принимает NSNotification*
в качестве параметра и сохраняет ваш ввод:
-(void)textFieldChanged:(NSNotification *)notification {
...
}
Не забудьте повторно вставить вход в ваши ячейки, если они прокручиваются обратноэкран.
Другой вариант - не использовать удаление очереди и создавать все ячейки, как только они понадобятся.Это может быть лучше, если у вас очень мало клеток.Вам нужно позаботиться о том, чтобы вернуть правильную ячейку в -cellForRowAtIndexPath:
.