Я пытаюсь воссоздать функциональность, аналогичную добавлению/редактированию телефонных номеров или электронных писем в редактировании контактов на iPhone. У меня всегда есть пустая строка с текстом-заполнителем. В режиме редактирования (нажатие кнопки на панели инструментов) я раскрываю UITextField. В обратном вызове «редактирование измененного» я вставляю новую строку в раздел, опять же, аналогично представлению редактирования контактов iPhone. Однако после вставки, когда я начинаю изменять 2-ю строку (3-я строка вставляется, как и ожидалось), значение текстового поля 1-й строки очищается до значения заполнителя.
Я где-то читал, что мне нужно будет сохранить текстовое поле. значение в строке 1, во время вставки 2-й строки и в конце редактирования (я полагаю), иначе оно было бы потеряно? Мне это кажется довольно странным, и мне было интересно, единственный ли это способ? В какой момент я вернусь, чтобы восстановить его? Это, конечно, продолжает повторяться, когда я вставляю новую строку и изменяю значения значений последней строки во всех предыдущих строках, которые очищаются. Может ли кто-нибудь указать мне пример аналогичной функциональности редактирования контактов? Если бы я изменил способ вставки строк, сделав так, чтобы последняя строка всегда была строкой «+ Добавить значение», помогло бы это? Я бы так не думал. Кроме того, было бы неплохо, если бы я мог изменить стиль 1-й строки с UITableViewCellEditingStyleNone на UITableViewCellEditingStyleDelete, но независимо от того, что я пытался, включая переключение редактирования NO/YES в середине, устанавливая все видимые строки, чтобы они реагировали на игнорирование переходов, я не могу это получить для работы, чтобы все строки, кроме последней, были с UITableViewCellEditingStyleDelete. Итак, я подумал, хорошо, пусть у меня будет начальная строка, которую нельзя удалить (не то, что я хотел, но я могу с этим жить).
Несколько строк вставляются автоматически в режиме редактирования с помощью UITextFields, аналогично контактному телефону/электронной почте.
Ответы (2)
Пожалуйста, подтвердите, но, читая дальше, я предполагаю, что прокрутка строк вне поля зрения приведет к той же проблеме, поэтому для textFieldDidEndEditing, а также, возможно, для каждой вставки в моем случае необходимо обрабатывать для сохранения «новых» данных в соответствующем запись массива хранения данных для каждой строки. Однако в моем случае без прокрутки мне, вероятно, потребуется сделать: - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimat.... для всех строк в изменяемом разделе и, возможно, для всех видимых строк. Подтверждение приветствуется.
Зачем вообще повторно использовать в вашем случае? Если все строки постоянно отображаются на экране, просто создайте новую UITableViewCell для каждой.
UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil] autorelease];
настроить контент, чтобы идти на него...
[cell.contentView addSubview:WHATEVER_YOU_CREATED];
[cell.contentView sizeToFit];
return cell;
Повторное использование ячеек — это способ для тех, у кого много строк, повторно использовать те, которые больше не видны, для экономии ресурсов.