我有以下方法:
- (void) okButtonPushed
{
if ([self.delegate respondsToSelector:@selector(alertViewWillDismiss:)])
{
[self.delegate alertViewWillDismiss:self];
}
[self removeFromSuperview];
}
这是自定义AlertView
对象上的“确定”按钮,当按下时会取消警报。我希望代表在超级视图中删除警报后发送消息,但显然这是不可能的,因为它将被解除分配。我能想到的唯一其他解决方案是superview将另一个指针保存到我的对象,但每次我发出警报时,我都必须隐式知道确保保留另一个指向它的指针。在我的AlertView
课程中有更清晰的方法吗?
答案 0 :(得分:2)
您可以使用willMoveToSuperview:回调(
)-(void)willMoveToSuperview:(UIView *)newSuperview {
if (newSuperview == nil) {
if ([self.delegate respondsToSelector:@selector(alertViewWillDismiss:)]) {
[self.delegate alertViewWillDismiss:self];
}
}
}
它将在取消分配视图之前被调用,并且之前它已经从superview中真正删除了(使用 newSuperview == nil )。
编辑:如果你希望它在后被重新移动 - 请使用didMoveToSuperview: