[英]Does willMoveToSuperview will also deallocate the UIView on which its got called?
[英]willMoveToSuperview is called twice
我正在向視圖控制器添加視圖。 在此視圖中,我實現了willMoveToSuperview
。 現在,我經歷了兩次調用此函數:
這是預期的行為嗎? 我還能使用什么其他方法來檢測當前視圖是否僅添加到超級視圖? didMoveToSuperview
似乎也做同樣的事情。 還是應該使用一個變量來記住該函數的調用頻率?
編輯:
現在我想我找到了它被兩次調用的原因。 我正在使用hide方法關閉視圖。 它在C#
但在這里不重要:
UIView.Animate (
0.5, // duration
() => { Alpha = 0; },
() => { RemoveFromSuperview(); }
);
如果我對此發表評論,它不會被兩次調用。 如何保存動畫並確保只調用一次?
將視圖添加到willMoveToSuperview:
視圖時,系統會將willMoveToSuperview:
發送到該視圖。 參數是新的超級視圖。
從willMoveToSuperview:
視圖中刪除視圖時,系統會將willMoveToSuperview:
發送到該視圖。 參數為nil。
您不能阻止系統發送willMoveToSuperview:
當從其willMoveToSuperview:
視圖中刪除視圖時,但是您可以檢查參數:
- (void)willMoveToSuperview:(UIView *)newSuperview {
if (newSuperview != nil) {
// not a removeFromSuperview situation
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.