让对象在从superview中删除之后向对象发送一条消息

时间:2013-04-07 14:23:01

标签: iphone ios cocoa-touch

我有以下方法:

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

    [self removeFromSuperview];
}

这是自定义AlertView对象上的“确定”按钮,当按下时会取消警报。我希望代表在超级视图中删除警报后发送消息,但显然这是不可能的,因为它将被解除分配。我能想到的唯一其他解决方案是superview将另一个指针保存到我的对象,但每次我发出警报时,我都必须隐式知道确保保留另一个指向它的指针。在我的AlertView课程中有更清晰的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用willMoveToSuperview:回调(

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

它将在取消分配视图之前被调用,并且之前它已经从superview中真正删除了(使用 newSuperview == nil )。

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