Дублируйте UITableViewCell - iPhone - PullRequest
0 голосов
/ 17 марта 2010

Я хотел бы создать эффект для ячейки UITableView. Эффект: дублируйте ячейку и переместите дублированную ячейку (оригинал остается на своем месте). Моя проблема - продублировать ячейку ...

Я пробовал:

Код:

UITableViewCell *animatedCell = [[UITableViewCell alloc] init];
animatedCell = [[self cellForRowAtIndexPath:indexPath] copy];

но UIView, похоже, не реализует копию ... Как я могу это сделать?

Спасибо

Ответы [ 2 ]

3 голосов
/ 17 марта 2010

Если вам нужно только дублированное изображение вашей ячейки для анимации (не реальный вид со всеми подпредставлениями), вы можете просто скопировать изображение ячейки:

UITableViewCell * aCell = [tableView cellForRowAtIndexPath:indexPath];
UIGraphicsBeginImageContext(aCell.frame.size);
[aCell.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *aCellImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView * imageView = [[UIImageView alloc] initWithImage:aCellImage];

Или, если вам нужен реальный вид, создайте его. И учтите, что UITableView не создает ячейки, вы делаете это в tableView: cellForRowAtIndexPath: метод вашего источника данных tableView. Так что используйте тот же код для создания другой ячейки с указанным indexPath ... Но не создавайте объект UITableViewCell, вместо этого создайте UIView и добавьте его в containsView ячейки. А когда вам понадобится дублирующаяся ячейка, создайте еще один экземпляр того же UIView и используйте его в своей анимации.

0 голосов
/ 17 марта 2010

Как правило, вы не хотите выделять ячейки вручную (кроме как в вашем tableView: tableView cellForRowAtIndexPath: метод делегата). Вместо этого внесите все необходимые изменения в модель данных, чтобы отразить новую ячейку, а затем попросите табличное представление вставить новую строку:

[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...