问题描述
我有一个动画作为我的一个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.
这篇关于为什么我的动画在我的单元格消失时,选择单元格?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!