2010-06-19 17 views
8

ऐसा लगता है कि UIView "didRemoveFromSuperview" या "willRemoveFromSuperview" तो फिर, कैसे जब एक UIView अपने superView से हटा दिया घटना को सुनने के लिए? मैं KVO का उपयोग करना चाहिए की तरह नहीं तरीकों है? अग्रिम में धन्यवाद!जब UIView अपने सुपर व्यू से अलग हो जाता है तो कैसे सूचित किया जाए?

+0

जब एक दृश्य हटा दिया जाता है आप जानते हैं, क्योंकि आप इसे कोड में क्या वैसे भी? बस अपने कोड को हुक अप करें, या एक सहायक फ़ंक्शन। – Eiko

उत्तर

4

आप अपने UIView को उपclass कर सकते हैं और - (void)removeFromSuperview विधि से अधिसूचनाएं पोस्ट कर सकते हैं।

+12

मुझे लगता है। एपीआई डॉक्टर कहते हैं: willMoveToSuperview: रिसीवर को सूचित करता है कि इसका पर्यवेक्षण निर्दिष्ट पर्यवेक्षण (जो शून्य हो सकता है) में बदलना है। ----------------------------------------- जब इस विधि को बुलाया जाता है और पैरामीटर शून्य है, दृश्य हटाया जा रहा है – Jagie

19

यह विषय काफी पुराना है, लेकिन मैं यह करने के लिए के बाद से गूगल खोज काफी उपयोगी है, यहाँ यह (UIView के डॉक्स से लिया गया) है

अवलोकन देखें-संबंधी परिवर्तनों

नहीं था एक रास्ता मिल गया

- didAddSubview:

- willRemoveSubview:

- willMoveToSuperview:

- didMoveToSuperview

- willMoveToWindow:

- didMoveToWindow

13

यह (iOS8 पर परीक्षण) काम करता है:

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

According to the UIView docs:

इस के डिफ़ॉल्ट कार्यान्वयन विधि करो कुछ नहीं जब भी विंडो बदलती है तो सबक्लास इसे अतिरिक्त क्रियाएं करने के लिए ओवरराइड कर सकते हैं।

खिड़की संपत्ति हो सकता है शून्य ... यह तब होता है जब रिसीवर बस इसके superview या से हटा दिया गया जब रिसीवर सिर्फ एक superview है कि एक खिड़की से जुड़ी नहीं है करने के लिए जोड़ा गया है।

0
- (void) willMoveToSuperview: (UIView *) newSuperview{ 
    if(newSuperview == nil){ 
     // UIView was removed from superview 
    } else { 
     // UIView was added to superview 
    } 
} 
संबंधित मुद्दे

 संबंधित मुद्दे