簡體   English   中英

如何在UIView與superView分離時收到通知?

[英]How to be notified when a UIView detached from its superView?

似乎UIView沒有像“ didRemoveFromSuperview ”或“ willRemoveFromSuperview ”這樣的方法。那么,當UIView從其superView中刪除時如何監聽事件?我應該使用KVO? 提前致謝!

這個話題已經很老了,但我找到了一種方法。由於谷歌搜索不夠有用,這里是(取自UIView的文檔)

觀察與視圖相關的更改

- didAddSubview:

- willRemoveSubview:

- willMoveToSuperview:

- didMoveToSuperview

- willMoveToWindow:

- didMoveToWindow

這有效(在iOS8上測試):

-(void) didMoveToWindow {
    [super didMoveToWindow]; // (does nothing by default)
    if (self.window == nil) {
        // YOUR CODE FOR WHEN UIVIEW IS REMOVED
    }
}

根據UIView文檔

此方法的默認實現不執行任何操作。 子窗口可以覆蓋它,以便在窗口更改時執行其他操作。

窗口屬性可能是nil ... 當接收器剛剛從其超級視圖中移除時或者剛剛將接收器添加到未附加到窗口的超級視圖時,會發生這種情況。

您可以將UIView子類化並從中發布通知- (void)removeFromSuperview方法。

- (void) willMoveToSuperview: (UIView *) newSuperview{
    if(newSuperview == nil){
        // UIView was removed from superview
    } else {
        // UIView was added to superview
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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