2012-03-07 11 views
7

मेरे पास एक आईफोन ऐप है जिसे मैं वर्तमान में स्टोरीबोर्ड के साथ एक्सकोड 4.3 में बना रहा हूं। मेरे पास एक "रूट" व्यू कंट्रोलर है जिसमें दो (2) सेक एक व्यू कंट्रोलर है जो UIWebView है। मैं segue (पहले से ही दोनों segues के लिए अद्वितीय पहचानकर्ता सेट कर सकता हूं) की पहचान करने में सक्षम होना चाहता हूं, इसलिए मैं UIWebView पर सही सामग्री को "धक्का" दे सकता हूं, जिस पर आधारित "रूट" व्यू कंट्रोलर में सेग्यू सक्रिय किया गया था।एक ही दृश्य नियंत्रक पर जा रहे दो segues को संभालने के लिए कैसे?

मुझे लगता है कि मुझे "readyForSegue" विधि का उपयोग करना है, लेकिन यह नहीं पता कि यह कहां जाएगा। एक ही व्यू कंट्रोलर पर जा रहे दो सीगों से निपटने के लिए मैं कहां से पता लगा सकता हूं? (मैंने इसे google'd किया है और मेरी स्थिति के लिए कुछ भी उचित नहीं पाया है)।

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"helpSegue"]) { 
     NSLog(@"helpSegue"); 
    } 
    else if ([segue.identifier isEqualToString:@"reportSegue"]) { 
     NSLog(@"reportSegue"); 
    } 
} 

उत्तर

3

आप -prepareForSegue:sender: फोन नहीं होगा, तो आप अपने दृश्य नियंत्रक में लागू होगी:

यहाँ कोड है कि मैं का उपयोग कर रहा है।

if ([segue.identifier isEqualToString:@"Segue Numero Uno"]) { 
    // do something here 
} 

आप कार्रवाई पर निर्भर करते हुए segue संक्रमण पैदा कर रही है किसी प्रकार का ले सकते हैं यही कारण है कि: यह है कि विधि का ओवरराइड में, आप segue के identifier संपत्ति (segue एक पैरामीटर के रूप में पारित हो जाता है) देख सकते हैं। आप स्टोरीबोर्ड संपादक में प्रत्येक सेग्यू के लिए पहचानकर्ता सेट कर सकते हैं।

अद्यतन: आपके द्वारा प्रदान की गई कोड के आधार पर (जिसे मैंने आपके प्रश्न में जोड़ा है), आपको अब सही विचार मिल गया है। इस बिंदु पर, यह सिर्फ पुराने पुराने फैशन डीबगिंग का मामला है। कुछ बातें की जांच करने के:

  • (अर्थात ऐसा सवाल नेतृत्व में segues करने के लिए) वर्ग जो इस -prepareForSegue:sender: लागू करता है का एक उदाहरण के रूप में सेट अप अपने स्टोरीबोर्ड में दृश्य नियंत्रक है? स्टोरीबोर्ड में नियंत्रक के प्रकार की जांच करें।

  • क्या आप अपने कोड पर उपयोग किए गए तारों को ठीक करें स्टोरीबोर्ड में अपने सेग के लिए सेट किए गए पहचानकर्ता से मेल खाते हैं? पूंजीकरण, वर्तनी, विराम चिह्न, और सफेद स्थान सभी गिनती।

  • क्या आपकी -prepareForSegue:sender: विधि कहा जा रहा है? वहाँ एक ब्रेकपॉइंट रखो और डीबग करें। यदि इसे बुलाया जा रहा है, तो segue के लिए पहचानकर्ता क्या है? अगर इसे नहीं कहा जा रहा है, तो स्टोरीबोर्ड में दृश्य नियंत्रक के पास सही वर्ग नहीं है।

+0

धन्यवाद, धन्यवाद, धन्यवाद! यही वही है जो मुझे चाहिए ... – SpokaneDude

+0

ओह ... क्षमा करें, लेकिन कोई "seque.identifier.isEqualToString विधि नहीं है ... मैंने रखा - (शून्य) [viewFontSerue ViewController.m में, जो प्रोजेक्ट में एकमात्र नियंत्रक है कोड। क्या मैंने कुछ गलत किया? – SpokaneDude

+0

'-isEqualToString:' एनएसएसटींग की एक विधि (संपत्ति नहीं है)। UIStoryboardSegue की 'पहचानकर्ता' संपत्ति एक एनएसएसटींग * है। इसलिए आप इसे ऊपर दिए गए कोड में दिखाए गए अनुसार इसका उपयोग करते हैं, यानी 'BOOL isEqual = [segue.identifier isEqualToString: @ "foo"];' यह सच है कि आप किसी भी विधि को कॉल करने के लिए डॉट सिंटैक्स का उपयोग कर सकते हैं जो पैरामीटर नहीं लेता है (हालांकि आपको वास्तव में केवल गुणों के लिए इसका उपयोग करना चाहिए), लेकिन '-isEqualToString:' * करता है * एक पैरामीटर लेता है, इसलिए डॉट सिंटैक्स पूरी तरह से बाहर है। – Caleb