У меня есть UITableViewController
с кнопкой редактирования.При нажатии на него пользователь может удалить или добавить строки в UITableView.Удаление строк работает нормально.Но когда я хочу добавить новую строку, я получаю короткую анимацию пустой ячейки, идущей слева, и когда анимация заканчивается, табличное представление выглядит точно так же, как и до вызова метода.Когда я добавляю новую ячейку, я добавляю новый объект в массив данных, который передает представление моей таблицы, а затем добавляю ячейку.Этот массив данных обновляется.Поэтому, если я позвоню [tableView reloadData]
после добавления новой ячейки, я получу возможность увидеть новую ячейку, но без анимации.И мне бы очень хотелось иметь анимацию.
У меня есть рабочий пример того же.Я понял, что после вызова tableView:commitEditingStyle:forRowAtIndexPath:
автоматически вызывается метод источника данных табличного представления tableView:cellForRowAtIndexPath:
.В моем случае это не так.Я думаю, это причина, почему я не вижу новую камеру.Любые идеи, почему это происходит?
Это мой `tableView: commitEditingStyle: forRowAtIndexPath:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
// Delete the row from the data source
[self.tableData removeObjectAtIndex:[indexPath row]];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:self.tableData forKey:self.key];
[defaults synchronize];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
else if (editingStyle == UITableViewCellEditingStyleInsert)
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
UITextField *textField = (UITextField *)[[cell contentView] viewWithTag:kTextFieldTag];
NSString *textFieldText = [textField text];
if (textFieldText != nil)
{
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
NSString *string = [[NSString alloc] initWithString:textFieldText];
[self.tableData addObject:string];
[string release];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:self.tableData forKey:self.key];
[defaults synchronize];
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
// If reloadData is being called, the new cell is displayed but without the animation
// [tableView reloadData];
}
else
{
// Display alert view
// Code for displaying an AlertView
}
}
}