didRemoveFromSuperview
UIViewには" "や" "のようなメソッドがないようです。次に、willRemoveFromSuperview
UIViewがsuperViewから削除されたときにイベントをリッスンする方法は?KVOを使用する必要がありますか?前もって感謝します!
14554 次
4 に答える
28
これは機能します(iOS8でテスト済み):
-(void) didMoveToWindow {
[super didMoveToWindow]; // (does nothing by default)
if (self.window == nil) {
// YOUR CODE FOR WHEN UIVIEW IS REMOVED
}
}
このメソッドのデフォルトの実装は何もしません。サブクラスはそれをオーバーライドして、ウィンドウが変更されるたびに追加のアクションを実行できます。
ウィンドウ プロパティが nilの可能性があります。これは、レシーバーがスーパービューから削除されたばかりか、ウィンドウに関連付けられていないスーパービューにレシーバーが追加されたときに発生します。
于 2015-06-18T22:41:38.767 に答える
28
このトピックはかなり古いですが、私はそれを行う方法を見つけました.Google検索は十分に役に立たなかったので、ここにあります(UIViewのドキュメントから取得)
ビュー関連の変更の観察
– didAddSubview:
– willRemoveSubview:
– willMoveToSuperview:
– didMoveToSuperview
– willMoveToWindow:
– didMoveToWindow
于 2013-02-01T11:29:12.157 に答える
8
- (void) willMoveToSuperview: (UIView *) newSuperview{
if(newSuperview == nil){
// UIView was removed from superview
} else {
// UIView was added to superview
}
}
于 2016-07-11T14:45:47.853 に答える
6
UIViewをサブクラス化し、その- (void)removeFromSuperview
メソッドから通知を投稿できます。
于 2010-06-19T08:42:48.417 に答える