2012-10-31 15 views
5

मैं एक आईफोन एप्लिकेशन (आईओएस 5 + स्टोरीबोर्ड + आर्क) पर काम कर रहा हूं। मेरे पास 2 व्यू कंट्रोलर ए और बीअनुरोध पर एक और दृश्य नियंत्रक को अधिसूचना भेजें

ए में एक बटन है। दबाए जाने पर मैं सर्वर से असीमित रूप से अनुरोध सबमिट कर रहा हूं (AFNetworking का उपयोग करके) और मैं performSegueWithIdentifier (मोडल को पुश नहीं) का उपयोग कर कंट्रोलर बी पर जाउंगा।

जब अनुरोध समाप्त होता है तो यह एक अनुरोध सफल निष्पादित करता है जो ब्लॉक को डेटाबेस में सहेज लेगा। (ब्लॉक ViewController ए में है क्योंकि अनुरोध वहां से भेजा गया है)

क्या कोई तरीका है कि मैं ViewController B को सूचित कर सकता हूं कि अनुरोध समाप्त हो गया है और बी में कोई विधि निष्पादित की गई है?

जो मैं खोज रहा हूं वह यह है कि जब अनुरोध समाप्त होता है और सफलता ब्लॉक में प्रवेश करता है तो मैं नियंत्रक बी में एक विधि चलाता हूं जो भारित दृश्य है।

मुझे उम्मीद है कि मैं स्पष्ट था। जोड़ने

[[NSNotificationCenter defaultCenter] postNotificationName:@"Midhun" object:nil]; 

अधिसूचना सुन वर्ग के viewDidLoad में पर्यवेक्षक की तरह:

धन्यवाद

उत्तर

12

एक अधिसूचना पोस्ट करने के लिए नीचे दिए गए कोड का उपयोग

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

performTask: विधि है जो होगा जब अधिसूचना मनाई जाती है तो बुलाया जाए।

देखें NSNotification Class Reference

+0

धन्यवाद श्रीमान। यह एक आकर्षण की तरह काम करता है – Youssef

+0

जिस तरह से मुझे काम करने के क्रम में दो बिंदु (:) के बिना विधि लिखनी थी। यह उनके साथ दुर्घटनाग्रस्त हो रहा था – Youssef

+1

क्षमा करें, दोस्त। मैं उल्लेख करना भूल गया। यदि आप कोई पैरामीटर पारित कर रहे हैं तो आपको इसे रखना होगा:। '- (शून्य) प्रदर्शन कार्य जैसे कार्य घोषित करना बेहतर है: (आईडी) प्रेषक' :) –

1

पहले विकल्प कहीं नियंत्रक बी देखने पर संदर्भ की दुकान (आवेदन प्रतिनिधि में उदाहरण के रूप में) और एक विधि को चलाने के लिए इसका इस्तेमाल करने की है।

दूसरा एक [NSNotificationCenter defaultCenter] के माध्यम से सूचना भेजने के लिए है, इसलिए नियंत्रक बी नोटिफिकेशन का एक श्रोता सेट कहीं (viewDidLoad एक अच्छी जगह हो सकता है):

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

और नियंत्रक एक भेजता है:

[[NSNotificationCenter defaultCenter] postNotificationName:@"requestfinishes" object:nil userInfo:nil]; 

ध्यान दें कि यदि आप किसी भिन्न थ्रेड से अधिसूचना भेजते हैं, तो श्रोता को उसी थ्रेड पर निष्पादित किया जाएगा।

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