2011-09-29 18 views
6

दो दृश्य नियंत्रकों के बीच एक सेग्यू लागू करने के दौरान segue ऑब्जेक्ट का उपयोग कर गंतव्य दृश्य नियंत्रक की संपत्ति को कैसे बदला जाए? प्रलेखन का कहना है कि इसे तैयार करने के अंदर किया जा सकता है ForSegue: प्रेषक: विधि। मैंने कोशिश की लेकिन सफल नहीं हुआआईओएस 5 segue कार्यान्वयन

उत्तर

13

डुनो अगर आपको अभी भी इसका जवाब चाहिए, लेकिन यह एक अकेला पोस्ट था, और यदि मैं सही हूं, तो यह अब एनडीए के तहत नहीं आता है। अगर मुझे गलती हो रही है, तो कृपया मेरे उत्तर को विस्मरण में कम करें, इसलिए हम यहां जाएं: मैंने कुछ ऐसा करने का काम किया जो आपको चाहिए।

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"relevantSegueIdentifier"]) 
    { 
     // [segue destinationViewController] is read-only, so in order to 
     // write to that view controller you'll have to locally instantiate 
     // it here: 
     ViewController *upcomingViewController = [segue destinationViewController]; 

     // You now have a solid reference to the upcoming/destination view 
     // controller. Example use: Allocate and initialize some property of 
     // the destination view controller before you reach it and inject a 
     // reference to the current view controller into the upcoming one: 
     upcomingViewController.someProperty = [[SomePropertyClass alloc] initWithString:@"Whatever!"]; 
     upcomingViewController.initialViewController = [segue sourceViewController]; 
     // Or, equivalent, but more straightforward: 
     //upcomingViewController.initialViewController = self; 
    } 
} 

मतलब यह है कि दोनों someProperty और initialViewController गंतव्य दृश्य नियंत्रक के accessors संश्लेषित कर रहे हैं: यह कोड है कि मेरे लिए काम करता है। उम्मीद है की यह मदद करेगा!

+0

यह एनडीए के तहत आता है लेकिन 3 दिनों में यह आधिकारिक रिलीज अक्टूबर 14 को नहीं होगा, लेकिन मुझे आपके उत्तर +1 –

+0

पसंद है मैंने आपके कहने की कोशिश की लेकिन मेरे 'गंतव्य दृश्य नियंत्रक' पर गुण अपडेट नहीं हैं । कोई सलाह? – Francesco

+0

मैं इसे गंतव्य व्यू कंट्रोलर के एक संश्लेषित एक्सेसर (एक निजी ivar) का उपयोग नहीं करता हूं और यह कि दृश्य नियंत्रक पहले से ही ऐप सेटअप के दौरान तत्काल प्रारंभ हो चुका है (यानी वास्तविक दृश्य नियंत्रकों के साथ स्टोरीबोर्ड, उनमें से सभी तत्काल @ एप के बीच एक सीगू प्रक्षेपण)। उस मामले में, यह काम करना चाहिए। यह तब सिस्टम की तरह कुछ हो सकता है जो आपके विशिष्ट विनाश के बारे में नहीं जानता। नियंत्रक वर्ग देखें। मेरे उदाहरण में क्लास व्यू कंट्रोलर UIViewController का उप-वर्ग है, और @ कार्यान्वयन से पहले मैं '#import "ViewController.h" जैसे कुछ करता हूं। क्या यह इन चीजों में से एक हो सकता है? – DarqueSandu

5

मैंने एक ट्यूटोरियल लिखा है जो नए दृश्य को जानकारी पास करने के लिए कोड उदाहरण देता है और प्रतिनिधिमंडल का उपयोग करके एक दृश्य से जानकारी वापस भेजता है, इसलिए इसे जांचें कि इसे आपकी समस्या का समाधान करना चाहिए। iOS 5 Storyboard: How To use Segues, Scenes and Static Content UITableViews

+0

मैंने इस पोस्ट को मारने से पहले ब्लॉग पढ़ा .. ब्लॉग के लिए धन्यवाद। – thesummersign

0

मैंने इस विषय के बारे में एक वीडियो बनाया है। मुझे उम्मीद है यह मदद करेगा। http://full.sc/17yKkZF

0

मैं स्रोत दृश्य नियंत्रक में क्या उपयोग है:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    UIViewController *upcomingViewController = [segue destinationViewController]; 
    upcomingViewController.view.tag = [[segue identifier] hash]; 
} 

और फिर गंतव्य दृश्य नियंत्रक में मैं (viewDidAppear में उदाहरण के लिए उपयोग)

if(self.view.tag == [@"MySeqgueIdentifier" hash]) 
{ 
    // Do something here... 
} 

यह अच्छा है, के बाद से उपयोग करें आपको कोई गुण आदि बनाने की ज़रूरत नहीं है और सबकुछ इंटरफ़ेस बिल्डर से ठीक से काम करता है।