2012-11-21 82 views
0

這是我第一次發佈,我被困在肯定是一個簡單的問題。我正在使用一個框架,導致雪落在用戶選擇的UIImage上。下面是創建snowfalling類的實例代碼:當popViewControllerAnimated:YES被執行時,應用程序與殭屍崩潰

- (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的幀]消息發送到解除分配對象」

如果我把:

[snowfalling stopanimating]; 

在降雪的情況下,比當前視圖控制器剛剛將雪凍結在屏幕上。但它會讓我彈出到前一個控制器沒有問題。

我的問題是,當後按鈕(popViewControllerAnimated:YES)被擊中時,我該如何停止動畫?

+1

您是否嘗試調用你的'stopAnimating'在'viewWillDisappear'? – Rob

回答

0
  1. 在你的控制器類創建一個屬性來保存snowfalling的價值:

    @property(nonatomic,retain) SnowFalling *snowfalling; // in @interface 
    
    @synthesize snowfalling; // in @implementation 
    
  2. 在你viewDidAppear:新創建的SnowFalling分配給該屬性,而不是局部變量。

  3. 請記住在將屬性分配給[發佈] 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]; 
    } 
    
  4. 在[返回按鈕:]調用popViewControllerAnimated之前調用

    [self.snowfalling stopanimating]; 
    self.snowfalling = nil; 
    

。更好的是,將這兩行放置在[viewWillDisappear:]中,這樣他們將總是被調用。

+0

我正在使用弧。如何確保在使用arc時釋放它? – user1840632

+0

這很好。非常感謝。 – user1840632

2

可以stopAnimatingviewWillDisappear
記得設置snowfalling自動釋放

+1

我正在使用弧。如何確保在使用arc時釋放它? – user1840632

+0

如果使用弧,它將由系統管理 –

相關問題