2013-04-07 91 views
1

其被移除後對象發送它自己委託的消息,我有以下方法:有來自上海華

- (void) okButtonPushed 
{ 
    if ([self.delegate respondsToSelector:@selector(alertViewWillDismiss:)]) 
    { 
     [self.delegate alertViewWillDismiss:self]; 
    } 

    [self removeFromSuperview]; 
} 

這是一個自定義AlertView對象上的OK按鈕當推駁回警報。我希望委託人在警告已從超級視圖中刪除後發送消息,但顯然這是不可能的,因爲當時它將被解除分配。我能想到的唯一的另一個解決方案是讓超級視圖保留另一個指向我的對象的指針,但是每當我做出警告時,我都必須隱式知道確保保留另一個指針。在我的AlertView課堂中有沒有更簡單的方法來完成這項工作?

回答

2

可以使用willMoveToSuperview:回調(

-(void)willMoveToSuperview:(UIView *)newSuperview { 
    if (newSuperview == nil) {  
     if ([self.delegate respondsToSelector:@selector(alertViewWillDismiss:)]) { 
      [self.delegate alertViewWillDismiss:self]; 
     } 
    } 
} 

的觀點被釋放之前,它會被調用,而只是之前它已經真正從上海華移除(newSuperview ==零)。

編輯:如果你希望它是它一直只是後(重新)移動 - 使用didMoveToSuperview:

+0

啊,這是一個有趣的解決方案,謝謝。只是好奇心,但爲什麼我會用willMoveToSuperview而不是didMoveToSuperView? – 2013-04-07 14:40:15

+0

我結束了與didMoveToSuperView實現,它似乎有同樣的效果。感謝您的迴應。 – 2013-04-07 16:24:27

+0

就我而言 - 我必須在視圖消失之前獲取我的視圖的屏幕截圖,以便爲過渡創建動畫。乾杯! – 2013-04-08 22:50:25