UITableView add cell Animation
Может ли кто-нибудь помочь мне с проблемой UITableView
анимирования?
По умолчанию у нас есть анимация для удаления ячейки и переупорядочения ячеек в UITableView
.
Можно ли добавить анимированную добавленную ячейку, если да, как это сделать.
Я проверил Три20, не понял, как twitter
выполнила анимацию развертывания таблицы в MyProfile > ReTweets.
Хотите попробовать без Three20 frameowrk,
с помощью существующей анимации в UITableView
.
Ответы
Ответ 1
Вы можете использовать следующий метод UITableView:
- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
Пример с self.dataSource, являющимся изменяемым массивом, и ваша таблица имеет только 1 раздел:
[self.dataSource addObject:@"New Item"];
NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:[self.dataSource count]-1 inSection:0];
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
Примечание: вычитается 1 из подсчета источника данных, поскольку NSIndexPath индексируется с нулевым значением.
Ответ 2
Swift
Пример массива, который является источником данных для представления таблицы
var myArray = ["Cow", "Camel", "Sheep", "Goat"]
Далее будет добавлена строка с анимацией в верхней части представления таблицы.
// add message to current array
myArray.insert("Horse", atIndex: 0)
// insert row in table
let indexPath = NSIndexPath(forRow: 0, inSection: 0)
tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Fade)
Несколько обновлений
Если вам нужно сделать несколько вставок и/или удалений, тогда их окружайте с помощью beginUpdates()
и endUpdates()
.
tableView.beginUpdates()
tableView.insertRowsAtIndexPaths([addIndexPath1, addIndexPath2, ...], withRowAnimation: .Fade)
tableView.deleteRowsAtIndexPaths([deleteIndexPath1, deleteIndexPath2, ...], withRowAnimation: .Fade)
tableView.endUpdates()
Дальнейшее чтение
Ответ 3
Использовать reloadRowsAtIndexPaths: indexPath
tableView.beginUpdates()
[tableView reloadRowsAtIndexPaths:indexPath withRowAnimation:UITableViewRowAnimationAutomatic];
tableView.endUpdates()
Надеюсь, это поможет вам.