У меня небольшая форма (5 полей) в сгруппированном UITableView. Каждый UITextField находится внутри ячейки UITableView. При нажатии в текстовом поле открывается клавиатура, которая затем позволяет прокручивать некоторые из ячеек вне поля зрения, когда вы их отбрасываете, их содержимое стирается.
Правильно ли я предполагаю, что они были перерисованы, поэтому их содержание исчезло? Если да, то каков наилучший способ предотвратить это? Поскольку у меня только 5 полей, мне нужно перерисовать мои ячейки, когда они прокручиваются назад?
Я повторно использую ячейки:
static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease]; }
У вас может быть отдельный массив текстовых полей и реализовать обратный вызов сотворения ячейки следующим образом:
-(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*) indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease]; } [[cell.contentView subviews] makeObjectsPerformSelector: @selector(removeFromSuperview)]; [cell.contentView addSubview: [textFieldsArray objectsAtIndex: indexPath.row]]; return cell; }