这是我第一次发帖,我被困在肯定是一个简单的问题上。我正在使用一个框架,导致雪落在用户选择的UIImage上。以下是创建降雪类实例的代码:
- (void)viewDidAppear:(BOOL)animated
{
// Animate
SnowFalling *snowfalling = [[SnowFalling alloc]
initWithView:self.view];
snowfalling.hidden = NO;
snowfalling.numbersOfFlake = 175;
[snowfalling startAnimating];
}
在此之后,我想使用自定义后退按钮弹回上一个视图:
// Custom back button on toolbar.
- (IBAction)backButton:(UIBarButtonItem *)sender {
[[self navigationController] popViewControllerAnimated:YES];
}
这很好用,当我点击后退按钮时,应用程序崩溃了一个僵尸,上面写着:“[uiview frame]消息发送到解除分配的对象”
如果我放置:
[snowfalling stopanimating];
在降雪的情况下,比当前的视图控制器只是在屏幕上冻结了雪。但它会让我弹出前一个控制器没有问题。
我的问题是,当按下后退按钮(popViewControllerAnimated:YES)时如何停止动画?
答案 0 :(得分:2)
您可以在stopAnimating
中viewWillDisappear
记得设置降雪自动释放
答案 1 :(得分:0)
在你的控制器类中创建一个属性来保存降雪的值:
@property(nonatomic,retain) SnowFalling *snowfalling; // in @interface
@synthesize snowfalling; // in @implementation
在viewDidAppear中:将新创建的SnowFalling分配给该属性而不是局部变量。
记得在将SnowFalling分配给酒店后立即[发布]。整个方法应如下所示:
- (void)viewDidAppear:(BOOL)animated
{
// Animate
self.snowfalling = [[SnowFalling alloc]
initWithView:self.view];
[self.snowfalling release];
self.snowfalling.hidden = NO;
self.snowfalling.numbersOfFlake = 175;
[self.snowfalling startAnimating];
}
在[backButton:]中调用
[self.snowfalling stopanimating];
self.snowfalling = nil;
调用popViewControllerAnimated之前。更好的是,将这两行放在[viewWillDisappear:]中,这样就可以调用它们。