2012-07-19 7 views
9

से कनेक्ट करें मेरे पास एक UIButton है और मैं इसे दो segues से कनेक्ट करने का प्रयास कर रहा हूं। कौन सी सीगू का उपयोग किया जाता है कई स्थितियों पर निर्भर करता है।आईओएस - एक यूआईबटन से 2 segues

उदाहरण के लिए

, जब UIButton (शीर्षक "अगला" के साथ) दबाया जाता है,

अगर (हालत 1) तो बाकी स्क्रीन ए के लिए जाने के बी

स्क्रीन करने के लिए जाना

मुझे विश्वास है कि मेरा कोड सही है (मैंने इसे किसी भी तरह से शामिल किया है), लेकिन समस्या यह है कि स्टोरीबोर्ड दृश्य में, मैं एक बटन को एक सेग्यू का उपयोग करके केवल एक दृश्य नियंत्रक से कनेक्ट कर सकता हूं। मैं यह कैसे तय करुं ?

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

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
     if([[segue identifier]isEqualToString:@"nextButtonID"]){ 
      creditCardViewController *cvc = [segue destinationViewController]; 
     } 
     else if([[segue identifier]isEqualToString:@"next2ButtonID"]){ 
      depositInfoViewController *divc = [segue destinationViewController]; 
     } 
} 

-(IBAction)nextClicked{ 
     if([accountType isEqualToString:@"patron"]){ 
      [self performSegueWithIdentifier:@"nextButtonID" sender:self]; 
     } 
     else{ 
      [self performSegueWithIdentifier:@"next2ButtonID" sender:self]; 
     } 
} 

उत्तर

17

स्टोरीबोर्ड विंडो में, दृश्य के निचले भाग पर दृश्य नियंत्रक आइकन से नियंत्रण खींचें और यह गंतव्य दृश्य नियंत्रक पर खींचें, segue एक देना पहचानकर्ता, और अगले segue के लिए दोहराना।

+0

लेकिन यह बटन से नहीं, दृश्य नियंत्रक से कर रहा है। अगर मैं इसे सही ढंग से समझ गया। –

+1

यह सही है। कोई सीगू बटन से 'भौतिक रूप से' संलग्न नहीं है। –

+0

स्टोरीबोर्ड केवल मुझे ctrl + से एक एकल सेग खींचने देता है। एक सीगू के पास एक दृश्य नियंत्रक के रूप में इसका स्रोत होने के बाद, मैं अब उस दृश्य नियंत्रक को नए सिगू के स्रोत को नहीं बना सकता। क्या यह नया है? –

4

आप prepareForSegue में किसी भी कोड का उल्लेख करने की जरूरत नहीं है जब तक कि यदि आप अन्य दृश्य नियंत्रक

-(IBAction)nextClicked 
{ 
    if ([strCheck isEqualToString:@"launch Screen A"]) 
     { 
      UIStoryboard *storyboard=[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; 

      ScreenA *screenA = (ScreenA *)[storyboard instantiateViewControllerWithIdentifier:@"ScreenA"]; 
      [self.navigationController pushViewController:screenA animated:NO]; 

     } 
     else 
     { 

      UIStoryboard *storyboard=[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; 

      ScreenB *screenB = (ScreenB *)[storyboard instantiateViewControllerWithIdentifier:@"ScreenB"]; 

      [self.navigationController pushViewController:screenB animated:NO]; 

     } 
} 
1

मैं अक्सर ऐसा करने के बाद के लिए कुछ डेटा पास करना चाहते हैं। मेरी विधि दो "मैनुअल" segues बनाने के लिए है।

  • इंटरफ़ेस बिल्डर ctrl + देखें नियंत्रक 1 से खींचें आईबी में इस segue पर नियंत्रक 2
  • क्लिक करें देखें और गुण पर जाएं और उसके पहचानकर्ता नाम के लिए में: nextButtonID
  • एक 2 segue बनाएँ और पालन उन्हीं चरणों का नामकरण यह next2ButtonID

फिर अपने कोड ठीक मुझे लगता है कि होगा काम करना चाहिए। मैंने उन मुद्दों में भाग लिया है जहां मेरे पास एक बटन से एक सीगू है - और फिर - मैं भी एक अलग सेग कॉल करने की कोशिश कर रहा हूं। इन्हें सामान्य "नियंत्रक-से-नियंत्रक" segues होने के कारण वे मैन्युअल रूप से कॉल करने के लिए सेटअप कर रहे हैं जैसा आप कर रहे हैं।

0

स्विफ्ट में 3:

स्टोरीबोर्ड, Ctrl + खींचें SourceViewController से DestAViewController और DestBViewController को segues बनाएं और प्रत्येक एक पहचानकर्ता (जैसे, "ToDestA" और "ToDestB") segue देने के लिए। फिर:

@IBAction func onButton(_ sender: Any) { 
    if (testForA){ 
     self.performSegue(withIdentifier: "ToDestA", sender: Any?) 
    } else { 
     self.performSegue(withIdentifier: "ToDestB", sender: Any?) 
     } 
    } 
संबंधित मुद्दे