2013-04-23 9 views
8

मुझे दो segue मिल गया है जो viewController पर जाता है। 2 बटन हैं जो 2 segues का उपयोग कर viewController से जुड़े हुए हैं। उस viewController में मुझे यह जांचने की आवश्यकता है कि कौन सा बटन क्लिक किया गया था। तो वास्तव में मुझे यह जांचने की ज़रूरत है कि कौन सी सेग्यू का इस्तेमाल किया गया था/preformed। मैं इसे नियंत्रक वर्ग दृश्य में कैसे देख सकता हूं? मैं जानता हूँ कि वहाँ prepareForSegue विधि है, लेकिन क्योंकि मैं कक्षा जहां 2 बटन हैं prepareForSegue लगाने की जरूरत है मैं अपने उद्देश्य के लिए इस का उपयोग नहीं कर सकते, और मैं इसे वहाँ नहीं करना चाहते, लेकिन मैं क्योंकि मैं viewControllers कक्षा में यह चाहते उस वर्ग में कुछ चरों तक पहुंचने और सेट करने की आवश्यकता है।यह जांचने के लिए कि कौन सी सेग्यू का उपयोग किया गया था

उत्तर

8

आप के एक चर निर्धारित करने की आवश्यकता पहले दृश्य की prepforsegue विधि में दूसरा व्यू कंट्रोलर। इस तरह यह किया जाता है:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if([segue.identifier isEqualToString:segueIdentifier1]) 
    { 
     SecondViewController *secondVC = (SecondViewController *)segue.destinationViewController; 
     if(sender.tag == ...) // You can of course use something other than tag to identify the button 
     { 
      secondVC.identifyingProperty = ... 
     } 
     else if(sender.tag == ...) 
     { 
      secondVC.identifyingProperty = ... 
     } 
    } 
} 

फिर आप उस संपत्ति को दूसरी वीसी में देख सकते हैं ताकि आप समझ सकें कि आप वहां कैसे आए थे। यदि आपने स्टोरीबोर्ड में 2 बटनों के लिए 2 सीगू बनाए हैं, तो केवल संबंधित गुण मान सेट करने के लिए केवल segue पहचानकर्ता पर्याप्त है। फिर कोड इस में बदल जाता है:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if([segue.identifier isEqualToString:segueIdentifier1]) 
    { 
     SecondViewController *secondVC = (SecondViewController *)segue.destinationViewController; 
     secondVC.identifyingProperty = ... 
    } 
    else if([segue.identifier isEqualToString:segueIdentifier2]) 
    { 
     SecondViewController *secondVC = (SecondViewController *)segue.destinationViewController; 
     secondVC.identifyingProperty = ... 
    } 
} 
+0

मुझे लगता है कि किया है, लेकिन जब मैं इस डाल: PageScrollViewController * नियंत्रक = (PageScrollViewController *) segue.destinationViewController; नियंत्रक। स्टार्टस्टोरी = हाँ; ऐप क्रैश – nonuma

+0

*** बिना अपवाद अपवाद के कारण ऐप को समाप्त करना 'एनएसआईएनवालिडअर्ग्यूमेंट एक्सेप्शन', कारण: '- [यूआईवीव कंट्रोलर सेटस्टार्टस्टोरी:]: अज्ञात चयनकर्ता उदाहरण 0x9976420' पर भेजा गया है *** पहले फेंक कॉल स्टैक: – nonuma

+0

अजीब हिस्सा यह है कि त्रुटि "setStartStory" के बारे में somethiing कहते हैं, लेकिन मैंने कभी इसका इस्तेमाल नहीं किया? मैं का उपयोग startStory – nonuma

2

तो सबसे पहले आप storyborads में या अपने कोड के माध्यम से performSegueWithIdentifier पद्धति का उपयोग करके सीधे अपने segues पहचानकर्ता सेट करना होगा। स्वतंत्र रूप से जिस तरह से आप choosed, अपने दृश्य नियंत्रक निम्न विधि आग जाएगा, ताकि आप यह जानना जो segue संदेश भेज रही थी ओवरराइड करने के लिए की जरूरत है, तो आप इस तरह कार्य करें:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {  
     if ([segue.identifier isEqualToString:@"ButtonSegueIdentifierOne"]) { 
      // button 1 
     } 
     if ([segue.identifier isEqualToString:@"ButtonSegueIdentifierTwo"]) { 
      // button 2 
     } 
} 
संबंधित मुद्दे

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