2012-05-09 11 views
16

क्या UIImageView.image प्रॉपर्टी पर पर्यवेक्षक सेट करने का कोई तरीका है, इसलिए मुझे सूचित किया जा सकता है कि संपत्ति कब बदल दी गई है? शायद एनएसएनोटिफिकेशन के साथ? मैं ऐसा कैसे कर पाऊंगा?क्या मेरी UIImageView.image संपत्ति में परिवर्तन होने पर अधिसूचित होने का कोई तरीका है?

मेरे पास बड़ी संख्या में UIImageViews हैं, इसलिए मुझे यह जानना होगा कि किस बदलाव में भी बदलाव आया है।

मैं यह कैसे कर सकता हूं? धन्यवाद।

उत्तर

20

इसे कुंजी-मूल्य निरीक्षण कहा जाता है। कुंजी-मूल्य कोडिंग अनुपालन वाली कोई भी वस्तु देखी जा सकती है, और इसमें गुणों वाले ऑब्जेक्ट्स शामिल हैं। केवीओ कैसे काम करता है और इसका उपयोग कैसे करें, इस पर this programming guide का एक पठन लें। यहाँ एक छोटी उदाहरण है (अस्वीकरण: यह काम नहीं हो सकता है)

- (id) init 
{ 
    self = [super init]; 
    if (!self) return nil; 

    // imageView is a UIImageView 
    [imageView addObserver:self 
       forKeyPath:@"image" 
        options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld 
        context:NULL]; 

    return self; 
} 

- (void) observeValueForKeyPath:(NSString *)path ofObject:(id) object change:(NSDictionary *) change context:(void *)context 
{ 
    // this method is used for all observations, so you need to make sure 
    // you are responding to the right one. 
    if (object == imageView && [path isEqualToString:@"image"]) 
    { 
     UIImage *newImage = [change objectForKey:NSKeyValueChangeNewKey]; 
     UIImage *oldImage = [change objectForKey:NSKeyValueChangeOldKey]; 

     // oldImage is the image *before* the property changed 
     // newImage is the image *after* the property changed 
    } 
} 
+1

मत भूलना 'में पर्यवेक्षक को दूर करने के -dealloc', इस तरह:' [imageView removeObserver: स्वयं forKeyPath: @ "छवि"]; ' –

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

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