UITextFields в UITableView, введенные значения снова появляются в других ячейках

У меня есть UITableView примерно с 20 ячейками, в каждой ячейке есть три UITextFields. Я НЕ создавал подкласса UITableViewCell, но при настройке каждой ячейки я устанавливал значение тега textfields на константу плюс номер строки. Таким образом, для каждой строки тег текстового поля увеличивается на единицу.

Когда я запускаю приложение и ввожу значение, например, в первую строку, оно может снова появиться в строке 12. Поведение не будет одинаковым каждый раз, когда я запускаю приложение.

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

Имеет ли это какое-то отношение к повторному использованию UITableViewCells? Могут ли текстовые поля в разных строках иметь одинаковые номера тегов при повторном использовании ячейки? Скажем, например, что первая ячейка (textfield tag = 1001) повторно используется в строке 12, тогда у нас есть два текстовых поля с одинаковым номером тега. Если я затем введу значение в строку 1, а затем загружу строку 12, значение из первой ячейки будет загружено из массива и также помещено в строку 12.

Если это происходит, как мне это исправить? Каждая ячейка не имеет ссылки на текстовое поле, поэтому я не думаю, что могу изменить значение тега текстового поля, просто имея доступ к ячейке, в которой оно находится.

РЕДАКТИРОВАТЬ:

Вот код для 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];

Спасибо!

5
задан Isak T. 29 May 2011 в 19:44
поделиться