簡體   English   中英

willMoveToSuperview被調用兩次

[英]willMoveToSuperview is called twice

我正在向視圖控制器添加視圖。 在此視圖中,我實現了willMoveToSuperview 現在,我經歷了兩次調用此函數:

  1. 將視圖添加到超級視圖時(按預期)
  2. 當當前視圖控制器被關閉時(例如,將新的視圖控制器推入導航控制器的堆棧中)

這是預期的行為嗎? 我還能使用什么其他方法來檢測當前視圖是否僅添加到超級視圖? 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM