Почему моя анимация в моей ячейке исчезает, когда ячейка выбрана? - PullRequest
0 голосов
/ 23 октября 2010

У меня есть анимация как изображение в одной из ячеек моего табличного представления.При щелчке по умолчанию он становится синим, и изображение исчезает!Навигация загружает новый вид, и когда я возвращаюсь к первому виду, надеясь, что моя анимация возвращается, увы, изображение отсутствует :(. Я ничего не делаю в функции didSelectRowAtIndexPath, кроме воспроизведения звукового сигнала и нажатия кнопкиновый взгляд. Любая помощь очень ценится.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
 {
  static NSString *CellIdentifier = @"Cell";
  CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

  if (cell == nil) {
   cell = [[[CustomCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
  }

  // Set up the cell…
  switch (indexPath.section) {
   case 0:
    cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"TBR2.png"]];
    cell.primaryLabel.text = @"Text 2";
    cell.primaryLabel.backgroundColor = [UIColor clearColor]; 
    //textColor = [UIColor redColor];
    cell.secondaryLabel.text = @"Text 1";
    cell.secondaryLabel.backgroundColor = [UIColor clearColor]; 
    cell.myImageView.animationImages = [NSArray arrayWithObjects: 
             [UIImage imageNamed:@"star_events.png"],
             [UIImage imageNamed:@"star_events2.png"],
             [UIImage imageNamed:@"star_events3.png"],
             [UIImage imageNamed:@"star_events4.png"],
             [UIImage imageNamed:@"star_events5.png"],
             [UIImage imageNamed:@"star_events6.png"],
             [UIImage imageNamed:@"star_events7.png"],
             [UIImage imageNamed:@"star_events8.png"],
             [UIImage imageNamed:@"star_events9.png"],
             [UIImage imageNamed:@"star_events10.png"],
             [UIImage imageNamed:@"star_events11.png"],
             [UIImage imageNamed:@"star_events12.png"],
             [UIImage imageNamed:@"star_events13.png"],
             [UIImage imageNamed:@"star_events14.png"],
             [UIImage imageNamed:@"star_events16.png"],
             [UIImage imageNamed:@"star_events17.png"],
             [UIImage imageNamed:@"star_events18.png"],
             [UIImage imageNamed:@"star_events19.png"],
             [UIImage imageNamed:@"star_events20.png"],
             [UIImage imageNamed:@"star_events21.png"],
             [UIImage imageNamed:@"star_events22.png"],
             [UIImage imageNamed:@"star_events23.png"],
             [UIImage imageNamed:@"star_events24.png"],
             [UIImage imageNamed:@"star_events25.png"],
             [UIImage imageNamed:@"star_events26.png"],nil];

    // all frames will execute in .5 seconds
    cell.myImageView.animationDuration = .5;
    // repeat the annimation forever
    cell.myImageView.animationRepeatCount = 0;
    // start animating

    [cell.myImageView startAnimating];

    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    break;
   case 1:
    cell.primaryLabel.text = @"Label 1";
    cell.secondaryLabel.text = @"Search";
    cell.myImageView.image = [UIImage imageNamed:@"magglass.png"];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    break;
   default:
    break;
  }
  return cell;
 }

}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
 NSString *path = [[NSBundle mainBundle] pathForResource:@"ping" ofType:@"wav"];

 AVAudioPlayer *myAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path]error:NULL];
 myAudio.delegate = self;
 [myAudio play];

 [tableView deselectRowAtIndexPath:indexPath animated:YES];

  Page2 *page2 = [[Page2 alloc] initWithNibName:@"Page2" bundle:nil];
  [self.navigationController pushViewController:page2 animated:YES];
  [page2 release];
}

1 Ответ

2 голосов
/ 08 октября 2015

У меня была такая же проблема на iOS 8.4 и выше, и я нашел решение. Может быть, это не очень хорошо, но это работает.

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

  • Подкласс UIImageView
  • Переопределить setHighlighted метод для исключения выделенного состояния из анимированного изображения.

Мой setHighlighted метод выглядит так:

- (void)setHighlighted:(BOOL)highlighted {

    if (!self.isAnimating) {
        [super setHighlighted:highlighted];
    }
}

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

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