UIImageView Остановка анимации в UITableView - PullRequest
1 голос
/ 17 февраля 2010

У меня есть UIImageView внутри UITableViewCell. UIImageView оживляет. По какой-то странной причине, когда ячейка выходит из поля зрения, анимация останавливается. UIImageView никогда не инициализируется снова, и UIImageView никогда явно не сообщается - (void) stopAnimating; поэтому я не уверен, почему он останавливается.

Вот интересные части моего cellforRowAtIndexPath :. Как вы можете

cell = (BOAudioCell *)[tableView dequeueReusableCellWithIdentifier:AudioCellIdentifier];
if (!cell) {
    cell = [[[BOAudioCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:AudioCellIdentifier] autorelease];
    BOPlayControl *playControl = [(BOAudioCell *)cell playControl];
    [[playControl playbackButton] addTarget:self action:@selector(playbackButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
}

int index = [indexPath row];

BOModel *model = [models objectAtIndex:index];
[[(BOAudioCell *)cell titleLabel] setText:[model title]];
[[(BOAudioCell *)cell favoriteButton] addTarget:self   action:@selector(favoriteButtonTapped:) forControlEvents:UIControlEventTouchUpInside];

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

Ответы [ 3 ]

3 голосов
/ 20 февраля 2010

Вы должны были открыть UIImageView в своей ячейке и запустить анимацию в методе cellForRowAtIndexPath или сделать переопределение метода prepareForReuse для UITableViewCell и запустить анимацию в этом методе.

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

0 голосов
/ 17 февраля 2010

Я написал обходной путь. Я просто использую NSTimer для ручной координации анимации UIImageView. Отлично работает.

0 голосов
/ 17 февраля 2010

Когда ячейка выходит за пределы экрана, она освобождается, а также освобождается подпредставление (представление изображения), что приводит к остановке анимации.

Держите где-нибудь -retain экземпляр этого изображения, чтобы избежать этого.

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