1

我有以下方法:

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

    [self removeFromSuperview];
}

这是一个自定义AlertView对象上的 OK 按钮,当按下它时会解除警报。我希望代表在从超级视图中删除警报后发送一条消息,但显然这是不可能的,因为届时它将被释放。我能想到的唯一其他解决方案是让超级视图保留另一个指向我的对象的指针,但是每次我发出警报时,我都必须隐含地知道要确保保留另一个指向它的指针。在我的课堂上是否有更清洁的方法来做到这一点AlertView

4

1 回答 1

2

您可以使用willMoveToSuperview:回调 (

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

它将在视图被释放之前被调用,就它被真正从超级视图中删除之前(使用newSuperview == nil)。

编辑:如果你希望它它被(重新)移动之后 - 使用didMoveToSuperview:

于 2013-04-07T14:34:01.330 回答