当选择单元格时,为什么我的单元格中的动画会消失?

时间:2010-10-22 21:18:18

标签: iphone objective-c cocoa-touch uitableview uikit

我在我的一个tableview的单元格中有一个动画作为我的图像。单击它时,它将变为默认蓝色,图像消失!导航加载新视图,当我回到第一个视图时,希望我的动画返回,唉,没有图像:(。除了播放哔声之外,我在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 个答案:

答案 0 :(得分:2)

我在iOS 8.4及以后遇到了同样的问题,我找到了解决方案。也许这不是很好但是有效。

我发现问题仅出在动画图像上,并且只有当图像将其状态更改为高亮显示时才会出现问题。所以UIImageView的解决方法如下:

  • 子类UIImageView
  • 覆盖setHighlighted方法以从动画图像中排除突出显示的状态。

我的setHighlighted方法如下:

- (void)setHighlighted:(BOOL)highlighted {

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

此外,如果您不需要在单元格上进行可见选择,则可以将selectionStyle属性设置为表格的UITableViewCellSelectionStyleNone