2010-06-19 9 views
8

UIView'in "didRemoveFromSuperview" veya "willRemoveFromSuperview" gibi yöntemlere sahip olmadığı görülüyor. Daha sonra, bir UIView süper görüntüden kaldırıldığında olayı nasıl dinleyebilirim? KVO'yu kullanmalıyım? şimdiden teşekkürler!Bir UIView, süper Görüntüsünden ayrıldığında nasıl bildirim alınabilir?

+0

bir görünüm kaldırıldı çıktığında yeniden yine kodda yapmak, çünkü biliyor musunuz? Sadece orada kodunuzu veya yardımcı bir işlevi bağlayın. – Eiko

cevap

4

UIView ve sonrası bildirimlerinizi - (void)removeFromSuperview yönteminden alt sınıflara ayırabilirsiniz.

+12

I find.Api doc diyor ki: willMoveToSuperview: Alıcıya, süper görüntüünün belirtilen süper görünüme (yaklaşık sıfır olabilir) geçmek üzere olduğunu bildirir. ----------------------------------------- Bu yöntem çağrıldığında ve parametre sıfırdır, görünüm kaldırılıyor – Jagie

19

Bu konu oldukça eski, ama google arama yeterince yararlı, işte burada

Görüntüleme İlgili Değişiklikleri

gözlemlemek (UIView dokümanlarının alınan) olduğu değildi gerdiği bunu yapmak için bir yol bulmuş

- didAddSubview:

- willRemoveSubview:

- willMoveToSuperview:

- didMoveToSuperview

- willMoveToWindow:

- didMoveToWindow

13

Bu (iOS8 üzerinde test) çalışır:

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

According to the UIView docs:

bu varsayılan uygulama yöntem yapmak hiçbir şey değil. Alt sınıflar, pencere her değiştiğinde ek eylemler gerçekleştirmek için bunu geçersiz kılabilir.

pencere tesis olabilir sıfır ... alıcı sadece bir Superview veya kaldırılmıştır oluşur alıcı bir pencereye bağlı olmayan bir Superview eklendi zaman.

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