Я пытаюсь создать табличный вид, аналогичный просмотру видеозаписей YouTube в фотоальбоме на iPhone.UITextField в UITableViewCell - добавление новых ячеек
Вот основные настройки.
У меня есть пользовательский UITableViewCell, созданный, содержащий UITextField. Отображение ячейки в моем столе отлично работает, и я могу редактировать текст без проблем. Я создал крючок события, поэтому я могу просмотреть, когда текст был изменен в текстовом поле.
[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]
Что я хочу сделать это. Когда пользователь первый редактирует текст, я хочу, чтобы вставить новую ячейку в виде таблицы ниже текущей ячейки (newIndexPath рассчитывается до правильного положения):
[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationBottom];
[self.tableView endUpdates];
Проблема заключается в том, когда я запускаю ячейки вставки кода в ячейка создается, но текст текстового поля обновляется ненадолго, но затем клавиатура отклоняется и текстовое поле возвращается к пустой строке.
Любая помощь была бы замечательной! Я весь день бил головой об этом.
- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section
{
if (section == 0)
return 2;
else
return self.tags.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
...
cell = (SimpleTextFieldTableCell *)[tableView dequeueReusableCellWithIdentifier:tagCellIdentifier];
if (cell == nil)
{
cell = [[[NSBundle mainBundle] loadNibNamed:@"SimpleTextFieldTableCell" owner:nil options:nil] lastObject];
}
((SimpleTextFieldTableCell *)cell).textField.delegate = self;
((SimpleTextFieldTableCell *)cell).textField.tag = indexPath.row;
((SimpleTextFieldTableCell *)cell).textField.text = [self.tags objectAtIndex:indexPath.row];
[((SimpleTextFieldTableCell *)cell).textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
- (void)textFieldDidChange:(id)sender
{
UITextField *textField = sender;
[self.tags replaceObjectAtIndex:textField.tag withObject:textField.text];
if (textField.text.length == 1)
{
[textField setNeedsDisplay];
[self addTagsCell];
}
}
- (void)addTagsCell
{
NSString *newTag = @"";
[self.tags addObject:newTag];
NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:self.tags.count - 1 inSection:1];
[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationBottom];
[self.tableView endUpdates];
}
Является ли текстовое поле пустым, если вы закомментируете вставку? – TahoeWolverine
Нет, текстовое поле поддерживает введенный текст, если нет вставки. Только когда ячейка вставлена, текст исчезает. –
tagCellIdentifier выше установлен в «SimpleTextFieldTableCell», который является идентификатором I, установленным для ячейки в Interface Builder. –