2013-04-07 50 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