У меня есть UITableView с около 20 ячеками, в каждой ячейке есть три поля UITextField. Я НЕ создал подкласс UITableViewCell, но при настройке каждой ячейки я установил значение тега textfields в константу плюс номер строки. Таким образом, для каждой строки тег текстового поля увеличивается на единицу.
Когда я запускаю приложение и ввожу значение, например, в первую строку, оно может появиться снова в строке 12. Поведение не всегда одинаково при каждом запуске приложения.
Я должен добавить, что у меня есть массив, хранящий содержимое, введенное в каждое текстовое поле. Когда текстовое поле редактируется, я сохраняю новое значение в массиве, и когда ячейка снова запрашивается табличным представлением, я устанавливаю значение текстовых полей в значение, сохраненное в массиве.
Это как-то связано с повторным использованием UITableViewCells?
При повторном использовании ячейки могут ли текстовые поля в разных строках получать одинаковые номера тегов? Скажем, например, что первая ячейка (тег textfield = 1001) повторно используется в строке 12, тогда у нас есть два текстовых поля с одинаковым номером тега. Если я затем введу значение в строку 1 и позже загрузлю строку 12, значение из первой ячейки будет загружено из массива и также помещено в строку 12.
Если это происходит, как мне это исправить?
Каждая ячейка не имеет ссылки на текстовое поле, поэтому я не думаю, что могу редактировать значение тега текстового поля, просто имея доступ к ячейке, в которой оно находится.
EDIT:
Вот код для UITableView: cellForRowAtIndexPath:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
//Modify cell, adding textfield with row-unique index value
cell = [self modifyCellForHoleInfo:cell atIndexPath:indexPath];
}
cell.accessoryType = UITableViewCellAccessoryNone;
// Load value for textfield stored in dataArray
((UITextField *)[cell viewWithTag:1000+indexPath.row]).text = [dataArray objectAtIndex:indexPath.row];
Спасибо!