UITableView добавить анимацию ячейки - PullRequest
30 голосов
/ 26 июня 2010

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

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

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

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

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

Ответы [ 3 ]

61 голосов
/ 26 июня 2010

Вы можете использовать следующий метод 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 имеет нулевую индексацию.

12 голосов
/ 09 июня 2016

Swift

Пример массива, являющегося источником данных для табличного представления

var myArray = ["Cow", "Camel", "Sheep", "Goat"]

Следующее добавит строку с анимацией вверху табличного представления.

// add item 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()

Дополнительная литература

0 голосов
/ 07 сентября 2016

Использовать reloadRowsAtIndexPaths: indexPath

    tableView.beginUpdates()
    [tableView reloadRowsAtIndexPaths:indexPath withRowAnimation:UITableViewRowAnimationAutomatic];
    tableView.endUpdates()

Я надеюсь, что это поможет вам ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...