Доступ к существующему UITableViewCell

Это был другой вопрос, но то, что я считал неправильным, было неправильным, поэтому я скорректировал заголовок, чтобы отразить то, что я действительно понял.

Я работаю над анимацией, которая берет копию изображения в cell.imageView обычного UITableViewCell и перемещает его в панель вкладок в нижней части экрана, чтобы имитировать помещение элемента в корзину. Я могу скопировать изображение и поместить копию в качестве подвид окна, но я не могу понять, как получить абсолютное положение исходного изображения, поэтому я могу разместить его сверху как отправную точку моей анимации.

Изображение всегда отображается вверху экрана, как если бы оно помещалось в 0,0.

Извините за ненужный характер вопроса, я уверен, что у меня что-то очень очевидное.

– (void) tableView: (UITableView *) tableView accessoryButtonTappedForRowWithIndexPath: (NSIndexPath *) indexPath {

UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath]; UIImageView *originalImgView = cell.imageView; UIImageView *img = [[[UIImageView alloc] initWithImage: cell.imageView.image] autorelease]; NSLog(@"Original %@", originalImgView.bounds); // Shows "Original (null)" at runtime. NSLog(@"Window Points %@", [self.view.window convertPoint:originalImgView.frame.origin toView:nil]); NSLog(@"Cell Points: %@", cell.bounds); // Shows "Original (null)" at runtime. [img setFrame:CGRectMake( originalImgView.bounds.origin.x, originalImgView.bounds.origin.y , cell.imageView.image.size.width, cell.imageView.image.size.height)]; [self.view.window addSubview:img]; NSLog(@"Selected Cell: %@", cell); // Shows cell info at run time, works 

}

Поэтому я делал все это неправильно. Я делал новую ячейку с тем же содержимым вместо использования текущей ячейки. Я исправил это, добавив тег в ячейку, когда он был создан.

cell.tag = [indexPath row];

За исключением того, что у меня возникла проблема, когда [indexPath row] == 0. Поэтому я добавил 1000 к ней и эта проблема исчезла.

cell.tag = (1000 + [indexPath row]);

Затем я просто заменил эту строку

UITableViewCell * cell = [self tableView: tableView cellForRowAtIndexPath: indexPath];

С

UITableViewCell * cell = (UITableViewCell *) [self.tableView viewWithTag: (1000 + [indexPath row])];

Теперь я получил ссылку на фактическую ячейку, которая уже находится в представлении таблицы, и я получаю правильные значения фрейма.

С более чем 1 секцией это может обеспечить более уникальные теги

([indexPath section] +1) позволяет избежать умножения на раздел 0 (1000 * ([indexPath section] +1)) дает шаги 1000, 2000 и т. д.

В cellForRowAtIndexPath установлен тег … cell.tag = ((1000 * ([indexPath section] +1)) + [indexPath row]);

В didSelectRowAtIndexPath его извлекает … UITableViewCell * selectedCell = (UITableViewCell *) [playlistTableView viewWithTag: ((1000 * ([indexPath section] +1)) + [indexPath row])];

предполагая, что ваш список не превышает 1000 ячеек в каждом разделе.

Это был отличный вопрос с очень полезным ответом Донка, спасибо за публикацию деталей.

  • Добавление скользящего вида в ячейку таблицы при выборе
  • Поиск объектов в массиве swift
  • UITableView прозрачный фон
  • UISearchBar подзаголовка UITableViewHeader?
  • Извлеките высоту пользовательских прототипов из раскадровки?
  • Вертикальный UICollectionView внутри пользовательского TableViewCell
  • Как я могу получить высоту определенной строки в UITableView
  • Установка полупрозрачного NO на UISearchBar
  • Табличное представление ящика: увольнение, потянув вниз
  • didFinishPickingMediaWithInfo NOT Called Swift
  • Ошибка, основные данные, причина: *** - : index (2) за пределами границ (2) '
  • Interesting Posts

    Как подключить два контроллера просмотра к одной кнопке в раскадровке?

    AVAudioRecorder не звучит

    Изменить имя существующего класса в xcode

    Добавить выделенные ячейки разных разделов в разных массивах, UICollectionView

    Значок красного минуса не появляется, когда я нажимаю кнопку редактирования

    Можно ли использовать одну прототипную ячейку в нескольких таблицах?

    Сайт «apple-mobile-web-app-able» переключается на Mobile Safari после выхода из системы

    AVPlayerViewController в ошибке UICollectionViewCell?

    XMPPFramework – Как перенести изображение с одного устройства на другое?

    Могу ли я сохранить свое приложение в Testflight во время процесса утверждения

    iOS – MapBox передает пользовательскую информацию через аннотацию

    Правильный способ преобразования char * в NSString без initWithCString?

    Позиция индикатора страницы UIPageViewController

    как посмотреть запись в iphone (NSLog) после перезапуска приложения?

    RestKit: Как вручную установить значение свойства управляемого объекта?

    Давайте будем гением компьютера.