gpt4 book ai didi

ios - willMoveToSuperview 被调用了两次

转载 作者:行者123 更新时间:2023-11-28 18:32:22 27 4
gpt4 key购买 nike

我正在向我的 View Controller 添加一个 View 。在这个 View 中,我已经实现了 willMoveToSuperview。现在我体验到这个函数被调用了两次:

  1. 当 View 被添加到父 View 时(如预期的那样)
  2. 当当前 View Controller 被关闭时(例如,一个新的 View Controller 被压入导航 Controller 的堆栈)

这是预期的行为吗?我可以使用什么其他方法来检测当前 View 是否仅添加到 super View ? didMoveToSuperview 似乎也是这样做的。或者我应该使用一个变量来记住函数被调用的频率?

编辑:

现在我想我找到了它被调用两次的原因。我正在使用隐藏 方法来关闭 View 。它在 C# 中,但在这里应该无关紧要:

UIView.Animate (
0.5, // duration
() => { Alpha = 0; },
() => { RemoveFromSuperview(); }
);

如果我注释掉它,它就不会被调用两次。如何保留动画并确保它只被调用一次?

最佳答案

当一个 View 被添加到一个父 View 时,系统发送willMoveToSuperview:给 View 。参数是新的父 View 。

当一个 View 从父 View 中移除时,系统发送willMoveToSuperview: 到 View 。参数为nil。

当你从父 View 中移除 View 时,你不能阻止系统发送willMoveToSuperview:,但你可以检查参数:

- (void)willMoveToSuperview:(UIView *)newSuperview {
if (newSuperview != nil) {
// not a removeFromSuperview situation
}
}

关于ios - willMoveToSuperview 被调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25996906/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com