繁体   English   中英

从超级视图中删除对象后,让对象向自己的委托发送消息

[英]Having object send its own delegate a message after its been removed from superview

我有以下方法:

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

    [self removeFromSuperview];
}

这是自定义AlertView对象上的“确定”按钮,按下该按钮将关闭警报。 我希望代理在警报已从超级视图中删除后发送消息,但是显然这是不可能的,因为届时它将被释放。 我能想到的唯一的其他解决方案是让超级视图保留指向我的对象的另一个指针,但是每次我发出警报时,我都必须隐式知道要确保保留另一个指向它的指针。 有没有更干净的方法可以从AlertView类中执行此AlertView

您可以使用willMoveToSuperview:回调(

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

视图被释放之前,它会被调用, 之前它已经真正从上海华移除(newSuperview ==无 )。

编辑:如果你希望它是刚过它已经(重新)移动-使用didMoveToSuperview:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM