2012-02-07 12 views
50

क्या कोई मेरे लिए performSegueWithIdentifier:sender: समझा सकता है? मुझे विचारों (और कक्षाओं) को स्विच करने की आवश्यकता है और कुछ दृश्यों और आईडी को उस दृश्य वर्ग में भी ले जाना है। मैं सोच रहा था कि performSegueWithIdentifier:sender:निष्पादन को समझना SegueWithIdentifier

धन्यवाद के साथ यह संभव है!

उत्तर

77

सबसे पहले, आपको अपने स्टोरीबोर्ड में सेग्यू सेट करना होगा और इसे उचित पहचानकर्ता दें। (Segue (बाएं पैनल पर क्लिक करें) और फिर गुण पर क्लिक करें (सही पैनल)।

तब आप अपने स्टोरीबोर्ड से बटन या तालिका पंक्तियों का चयन करने के लिए इस लिंक कर सकते हैं, या आप performSegueWithIdentifier:sender: का उपयोग कर कोड में यह कह सकते हैं।

इस के बाद, आपके विचार नियंत्रक prepareForSegue:sender: संदेश भेजा जाएगा आप अपने दृश्य नियंत्रक उपवर्ग में इस विधि को ओवरराइड, और इस प्रकार लक्ष्य दृश्य नियंत्रक कॉन्फ़िगर कर सकते हैं:।।

TargetViewController *targetVC = (TargetViewController*)segue.destinationViewController; 
targetVC.string1 = string1; 

और इसके आगे sender में यह विधि वह ऑब्जेक्ट होगी जिसका उपयोग आपके रूप में करते हैं मूल विधि कॉल में।

+0

धन्यवाद! वास्तव में बहुत समझाया! :) –

+0

मैंने किया (Myclass *) nextViewController = segue.destinationViewController; nextView.textfield1.text = @ "टेस्ट"; लेकिन एक्सकोड में समस्या है (Myclass *) अगला व्यू कंट्रोलर –

+0

MyClass को UIViewController का उप-वर्ग होना चाहिए। Segues नए दृश्य नियंत्रकों के लिए हैं, विचार नहीं। – jrturton

3

prepareForSegue:sender: में आपको destinationViewController कॉन्फ़िगर करने का मौका मिलता है: यही वह जगह है जहां आप इसे आवश्यक डेटा पास कर देंगे। इस पर Cocoa Application Competencies for iOS में चर्चा की गई है।

+0

लिंक और जानकारी के लिए धन्यवाद, मैं इसके माध्यम से पढ़ूंगा। आपके प्रयास की सराहना। –

9

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

कभी-कभी, प्रोग्रामिंग के रूप में एक सेग्यू ट्रिगर करना समझ में आता है - उदा। आपके पास एक उच्च स्कोर दृश्य है जो प्रदर्शित होता है जब उपयोगकर्ता किसी गेम के दौर को जीतता है। स्टोरीबोर्ड में जीतने की अवधारणा को व्यक्त करने का कोई तरीका नहीं है, इसलिए आप इसके बजाय एक सेग्यू बना सकते हैं, इसे पहचानकर्ता असाइन कर सकते हैं, और रनटाइम पर -performSegueWithIdentifier:sender: का आह्वान कर सकते हैं।

UIViewController पर अन्य segue संबंधित विधि, -prepareForSegue:sender:, वह विधि है जिसे आपको गंतव्य दृश्य नियंत्रक पर कोई अनुकूलन करने के लिए ओवरराइड करना चाहिए।

+0

बहुत अच्छी व्याख्या। –

-1

आज मैं प्रदर्शन के मुद्दे में भाग गया SegueWithIdentifier: मेरे यूआरएल सत्र पर एक प्रतिनिधि कतार सेट न करने के तथ्य के कारण निष्पादित नहीं।

तो किसी भी मौके से, जांचें कि क्या आप वास्तव में एक प्रतिनिधि कतार स्थापित कर रहे हैं जब आपका URL सत्र बनाते हैं, अन्यथा URLSession इसे स्वयं बना देगा।

urlSession = [NSURLSession sessionWithConfiguration:sessionConfigObject 
              delegate:self 
             delegateQueue:[NSOperationQueue mainQueue]]; 

मैं इस यहाँ उल्लेख है क्योंकि मैं अक्सर URLSession यूआई संबंधित गतिविधि के कुछ प्रकार बुला समाप्त निपटने देखते हैं। और निष्पादन को मुख्य पर निष्पादित करने की आवश्यकता है, अन्यथा यह कुछ भी नहीं करेगा।

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

  • कोई संबंधित समस्या नहीं^_^