Подтвердить что ты не робот

UITableView add cell Animation

Может ли кто-нибудь помочь мне с проблемой UITableView анимирования?

По умолчанию у нас есть анимация для удаления ячейки и переупорядочения ячеек в UITableView.

Можно ли добавить анимированную добавленную ячейку, если да, как это сделать.

Я проверил Три20, не понял, как twitter выполнила анимацию развертывания таблицы в MyProfile > ReTweets.

Хотите попробовать без Three20 frameowrk, с помощью существующей анимации в UITableView.

4b9b3361

Ответ 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()

Надеюсь, это поможет вам.