为什么我的动画在我的单元格消失时

为什么我的动画在我的单元格消失时

本文介绍了为什么我的动画在我的单元格消失时,选择单元格?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个动画作为我的一个tableview的单元格中的图像。当它被点击,它会变成默认蓝色,图像消失!导航加载新视图,当我回到第一个视图,希望我的动画返回,唉,没有图像:(。didSelectRowAtIndexPath函数除了发出哔声,除了推动非常感谢任何帮助。

I have an animation as my image in one of my tableview's cells. When it is clicked, it turns the default blue and the image disappears! The navigation loads the new view, and when it I go back to the first view, hoping my animation returns, alas, there is no image :(. I don't do anything in the didSelectRowAtIndexPath function besides play a beep sound and push the new view. Any help is greatly appreciated.

- (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];
}


推荐答案

iOS 8.4及以后,我找到了一个解决方案。也许这不是很好,但它的工作。

I had the same problem on iOS 8.4 and onwards and I've found a solution. Maybe it's not very good but it works.

我发现,问题只是与动画图像,只有当图像改变其状态为突出显示。所以我对 UIImageView 的解决方法如下:

I figured out that the problem is only with the animated image and only when the image changes its state to highlighted. So my workaround for UIImageView is as follows:


  • 子类 UIImageView

  • 覆盖 setHighlighted 方法可从动画图像中排除突出显示的状态。 $ b
  • Subclass UIImageView
  • Override setHighlighted method to exclude highlighted state from animated image.

我的 setHighlighted 方法如下:

- (void)setHighlighted:(BOOL)highlighted {

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

此外,如果您不需要您可以将 selectionStyle 属性设置为表格的 UITableViewCellSelectionStyleNone

Also, If you don't need visible selection on the cell you can set selectionStyle property to UITableViewCellSelectionStyleNone of your table.

这篇关于为什么我的动画在我的单元格消失时,选择单元格?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-11 12:22