我已将自定义动画添加到UITableViewCells。每个单元格都有自己的动画。当我弹出视图时,动画继续,我得到一个错误的exec错误,因为动画正在尝试访问解除分配的单元格。
如何在取消分配视图之前停止动画?
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
self.Currentcell = [tableView cellForRowAtIndexPath:indexPath];
[UIView beginAnimations:@"fade" context:nil];
[UIView setAnimationDuration:0.4];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[self.Currentcell.accessoryView viewWithTag:1].alpha = 0;
[self.Currentcell.accessoryView viewWithTag:2].alpha = 1;
[UIView setAnimationDidStopSelector:@selector(animationEnded:finished:context:)];
[UIView setAnimationDelegate:self];
[UIView commitAnimations];
}
- (void)animationEnded:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
[UIView beginAnimations:animationID context:context];
[UIView setAnimationDuration:0.3];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[cell.accessoryView viewWithTag:1].alpha = 1;
[cell.accessoryView viewWithTag:2].alpha = 0;
[UIView commitAnimations];
}
答案 0 :(得分:1)
This thread表示commitAnimations应该保留您的视图,因此在它仍然是动画时不应该取消分配。也许你在某个地方过度释放视图?构建和分析(在Xcode 3.2+ afaik中提供)可能有助于发现这一点。
答案 1 :(得分:0)
我不知道你的动画代码是什么样的(也许你可以发布一些?),所以我可以猜测。基本上,您可能需要在视图控制器中实现-viewWillDisappear:方法并停止那里正在运行的动画。