2010-01-20 5 views
5

पर किए गए अन्य व्यू कंट्रोलर को सूचित करें मेरे पास एक छवि सहेजने के लिए उपयोग की जाने वाली विधि है जब उपयोगकर्ता सहेजें पर क्लिक करता है। मैं छवि को सहेजने के लिए performSelectorInBackground का उपयोग करता हूं, व्यू कंट्रोलर पॉप किया गया है और पिछला व्यू कंट्रोलर दिखाया गया है।performSelectorInBackground,

छवियों को पूरा होने पर मैं अपने डेटा को पुनः लोड करने के लिए तालिका (पिछले UIViewController पर) चाहता हूं।

मैं यह कैसे कर सकता हूं?

विधि बचाने के इस तरह कहा जाता है:

[self performSelectorInBackground:@selector(saveImage) withObject:nil]; 
[self.navigationController popViewControllerAnimated:YES]; 

उत्तर

9

अपने saveImage विधि में, छवि को सहेजने और विधि से वापस आने से पहले अधिसूचना पोस्ट करें। कुछ इस तरह:

// post notification 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"ImageSaved" object:nil]; 

नियंत्रक मेज से निपटने में,

- (void) imageSaved:(NSNotification *)notification{ 

    [self.tableView reloadData]; 

} 

को लागू करने और अपने viewDidLoad विधि सूचनाओं के लिए रजिस्टर करने के लिए निम्न कोड जोड़ें:

[[NSNotificationCenter defaultCenter] addObserver:self 
           selector:@selector(imageSaved:) 
               name:@"ImageSaved" object:nil]; 

अंत में, अपंजीकृत dealloc विधि

[[NSNotificationCenter defaultCenter] removeObserver:self]; 
+0

उत्कृष्ट, धन्यवाद। – McDJ

2

मुझे जाना saveimage दिनचर्या के अंत में विधि बुला रहा है जिस तरह से लगता है।

[self performSelectorInBackground:@selector(saveImage) withObject:previousView]; 

की तरह हो सकता है कि कुछ और तुम saveimage नास्तिक रखने के लिए, एक कॉलबैक कि आपके previousView उपयोग कर सकते हैं के साथ एक प्रोटोकॉल बनाने चाहते हैं।

@protocol processingFinishedDelegate 
-(void)processingFinished; 
@end 

तो saveimage के अंत में आप होगा:

[(id<processingFinishedDelegate>)object processingFinished]; 

और निश्चित रूप से अपने previousView वर्ग इंटरफ़ेस प्रतिनिधि संभाल चाहिए।

0

मुझे "unforgiven" दृष्टिकोण के साथ UITextView को अद्यतन करने के लिए इसका उपयोग करने में समस्याएं आ रही हैं। मैंने कुछ अलग-अलग तरीकों की कोशिश की लेकिन सभी असफल रहे ... मैंने अधिसूचनाओं + पर्यवेक्षकों को भी कोशिश की लेकिन कोई सफलता नहीं ... वह क्यों है? यह UILabel पर ठीक काम कर रहा है लेकिन इस संदेश के साथ कोई UITextView नहीं है:

मुख्य धागे या वेब थ्रेड के अलावा किसी अन्य थ्रेड से वेब लॉक प्राप्त करने का प्रयास किया। यह माध्यमिक धागे से UIKit को कॉल करने का परिणाम हो सकता है। अब क्रैशिंग ...

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