दिलचस्प पोस्ट
PHP exec $ PATH चर लापता तत्वों लगातार डीबी कनेक्शन – हाँ या नाय? "अजीब" सी # गुण वाक्यविन्यास जावा या वेनिला जावास्क्रिप्ट में डोम उत्परिवर्तन की घटना <बाहर टी> बनाम <T> जेनरिक्स में एक गतिरोध क्या है? पारदर्शी आधा चक्र एक div से बाहर काट दिया Winforms में नियंत्रित करने के लिए बाध्यकारी संपत्ति फ़ंक्शन कॉल पर टाइमआउट मैं PHP परियोजना में अप्रयुक्त फ़ंक्शन कैसे प्राप्त करूं? एएसपी.NET वेब एपीआई में कई जीईटी विधियों के साथ एकल नियंत्रक मैं जर्सी जेसन पॉजो समर्थन का उपयोग कैसे करूं? पीपी के साथ समस्याएं स्थापित numpy – रनटाइम त्रुटि: टूटा टूलचैन: एक साधारण सी प्रोग्राम को लिंक नहीं कर सकता थ्रेड का उपयोग करने में क्या गलत है। स्प्रिंग एमवीसी – एचटीटीपी मीडिया टाईप नॉट एसेक्सेबल एक्सपेशेशन

एक सेग्यू प्रोग्रामेटिक रूप से बनाना

मेरे पास एक सामान्य UIViewController जो कि मेरे सभी UIViewsControllers कुछ सामान्य कार्यों का पुन: उपयोग करने के लिए विस्तार करते हैं

मैं इस "आम" UIViewController पर एक segue स्थापित करना चाहते हैं ताकि सभी अन्य UIViewControllers वारिस

मैं यह पता लगाने की कोशिश कर रहा हूं कि मैं प्रोग्रामेटिक रूप से कैसे करूँ?

मुझे लगता है कि प्रश्न यह भी हो सकता है कि मैं अपने सभी UIViewControllers लिए कहानी बोर्ड में जाकर और उन्हें हाथ से कर के बिना कैसे सेट कर सकता हूं

वेब के समाधान से एकत्रित समाधान "एक सेग्यू प्रोग्रामेटिक रूप से बनाना"

परिभाषा के अनुसार एक सेग्यू वास्तव में एक स्टोरीबोर्ड की स्वतंत्र रूप से मौजूद नहीं हो सकता है। यह वर्ग के नाम पर भी है: UIStoryboardSegue आप segues प्रोग्राममैटिक रूप से नहीं बनाते – यह स्टोरीबोर्ड रनटाइम है जो उन्हें आपके लिए बनाता है आप आमतौर पर performSegueWithIdentifier: कॉल कर सकते हैं performSegueWithIdentifier: अपने दृश्य नियंत्रक के कोड में, लेकिन यह संदर्भ के लिए पहले से ही स्टोरीबोर्ड में स्थापित एक सेग्यू होने पर निर्भर करता है।

मुझे क्या लगता है कि आप पूछ रहे हैं कि आप अपने सामान्य दृश्य नियंत्रक (आधार वर्ग) में एक विधि कैसे बना सकते हैं जो एक नया दृश्य नियंत्रक के लिए संक्रमण होगा, और सभी व्युत्पन्न कक्षाओं द्वारा विरासत में मिलेगा। आप ऐसा अपने मूल वर्ग दृश्य नियंत्रक के रूप में एक विधि बनाकर कर सकते हैं:

 - (IBAction)pushMyNewViewController { MyNewViewController *myNewVC = [[MyNewViewController alloc] init]; // do any setup you need for myNewVC [self presentModalViewController:myNewVC animated:YES]; } 

और उसके बाद आपके व्युत्पन्न वर्ग में, उस विधि को कॉल करें जब उपयुक्त बटन क्लिक किया जाता है या तालिका पंक्ति चुना जाता है या जो भी हो

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

यहां छवि विवरण दर्ज करें

एक पॉपअप "मैनुअल सेग्यू" के लिए दिखाया जाएगा मैंने पुश को प्रकार के रूप में चुना छोटे वर्ग पर टैप करें और सुनिश्चित करें कि आप विशेषताओं निरीक्षक में हैं इसे एक पहचानकर्ता दें जिसे आप इसे कोड में देखेंगे।

यहां छवि विवरण दर्ज करें

ठीक है, अगले दिन मैं एक प्रोग्रामेटिक बार बटन आइटम का उपयोग कर सेगमेंट में जा रहा हूं। ViewDidLoad या कहीं और में मैं इस कोड के साथ नेविगेशन बार पर एक बटन आइटम बनाऊँगा:

 UIBarButtonItem *buttonizeButton = [[UIBarButtonItem alloc] initWithTitle:@"Buttonize" style:UIBarButtonItemStyleDone target:self action:@selector(buttonizeButtonTap:)]; self.navigationItem.rightBarButtonItems = @[buttonizeButton]; 

ठीक है, ध्यान दें कि चयनकर्ता बटन है बटनटन टैप :. तो उस बटन के लिए एक शून्य विधि लिखें और उस विधि के भीतर आप इस तरह से सेग्यू को बुलाएंगे:

 -(void)buttonizeButtonTap:(id)sender{ [self performSegueWithIdentifier:@"Associate" sender:sender]; } 

प्रेषक पैरामीटर को जब फ़ोरेस्टेग को तैयार किया जाता है तब बटन को पहचानने की आवश्यकता होती है। तैयार करेंएफ़ेसीईजीई एक रूपरेखा पद्धति है, जहां आप अपने दृश्य को इन्स्तांत करेंगे और जो भी मूल्यों को अपना काम करने की आवश्यकता होगी उसे पास करेंगे। मेरा तरीका ऐसा दिखता है:

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier] isEqualToString:@"Associate"]) { TranslationQuizAssociateVC *translationQuizAssociateVC = [segue destinationViewController]; translationQuizAssociateVC.nodeID = self.nodeID; //--pass nodeID from ViewNodeViewController translationQuizAssociateVC.contentID = self.contentID; translationQuizAssociateVC.index = self.index; translationQuizAssociateVC.content = self.content; } } 

ठीक है, बस इसे परीक्षण किया और यह काम करता है आशा है कि यह आपको मदद करता है

मैं अपने कस्टम सेगू उपवर्ग को इन्स्ताइज़ करने के लिए इस कोड का उपयोग कर रहा हूं और इसे प्रोग्रामैटिक रूप से चलाता हूं यह काम करने लगता है इस के साथ कुछ भी गलत है? मुझे हैरान हो रहा है, अन्य सभी उत्तरों को पढ़कर कह रहा है कि यह नहीं किया जा सकता है।

 UIViewController *toViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"OtherViewControllerId"]; MyCustomSegue *segue = [[MyCustomSegue alloc] initWithIdentifier:@"" source:self destination:toViewController]; [self prepareForSegue:segue sender:sender]; [segue perform]; 

लगता है कि इसका जवाब दिया और स्वीकार किया गया है, लेकिन मैं इसे कुछ और विवरण जोड़ना चाहता हूं।

मैंने एक समस्या को हल करने के लिए क्या किया, जहां मैं पहली स्क्रीन के रूप में लॉग-इन दृश्य पेश करूंगा और फिर लॉगिन सही था अगर आवेदन के साथ जुड़ना चाहता था। मैंने सेग्यू को लॉगिन-दृश्य नियंत्रक से रूट व्यू नियंत्रक तक बनाया और इसे "माइंडिडिफायर" जैसे पहचानकर्ता दिया।

लॉग इन सही थे तो सभी लॉगिन कोड को चेक करने के बाद मैं कॉल करूंगा

 [self performSegueWithIdentifier: @"myidentifier" sender: self]; 

मेरी सबसे बड़ी गलती यह थी कि मैंने एक बटन पर सेग्यू डाल दिया और एक बार जब यह पाया गया कि सीगू को बीच में डाल दिया जाए।

आपको अपने कोड को UIStoryboard से लिंक करना होगा UIStoryboard उपयोग आप कर रहे हैं। सुनिश्चित करें कि आप अपने UIStoryboard नियंत्रक में अपने UIStoryboard में UIStoryboard , इसके चारों ओर की सीमा पर क्लिक करें, और फिर अपने identifier फ़ील्ड को NSString सेट करें जो आप अपने कोड में कॉल करते हैं।

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; YourViewController *yourViewController = (YourViewController *) [storyboard instantiateViewControllerWithIdentifier:@"yourViewControllerID"]; [self.navigationController pushViewController:yourViewController animated:YES]; 

स्टोरीबोर्ड में मौजूद नियंत्रकों के लिए

jhilgert00 यह आप के लिए क्या देख रहे थे है?

 -(IBAction)nav_goHome:(id)sender { UIViewController *myController = [self.storyboard instantiateViewControllerWithIdentifier:@"HomeController"]; [self.navigationController pushViewController: myController animated:YES]; } 

या …

 [self performSegueWithIdentifier:@"loginMainSegue" sender:self]; 

अच्छी तरह से, आप बना सकते हैं और UIStoryBoardSegue subclass कर सकते हैं उप-क्लासिंग का उपयोग प्रायः कस्टम संक्रमण एनीमेशन देने के लिए किया जाता है।

आप डब्ल्यूडब्ल्यूडीसी 2011 के स्टोरीबोर्ड के वीडियो का परिचय देख सकते हैं इसके यूट्यूब में भी उपलब्ध है

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIStoryboardSegue_Class/Reference/Reference.html#//apple_ref/occ/cl/UIStoryboardSegue

मैं एक स्पष्टीकरण जोड़ना चाहता हूं …

एक आम गलतफहमी है, वास्तव में एक है जो मेरे पास कुछ समय था, यह है कि एक स्टोरीबोर्ड prepareForSegue:sender: हो गया है prepareForSegue:sender: विधि। यह नहीं। एक स्टोरीबोर्ड prepareForSegue:sender: प्रदर्शन करेगा, भले ही आपने तैयार किया है या नहीं इसके लिए तैयार है prepareForSegue:sender: विधि (से प्रस्थान) दृश्य नियंत्रक

मैं यह पॉल हेगर्टी के उत्कृष्ट iTunesU व्याख्यान से यह सीखा है मेरी क्षमायाचना, लेकिन दुर्भाग्य से याद नहीं कर सकता कि कौन सा व्याख्यान

यदि आप स्टोरीबोर्ड में दो दृश्य नियंत्रकों के बीच एक prepareForSegue:sender: करते हैं, लेकिन तैयार नहीं करते हैं तो तैयार करें prepareForSegue:sender: विधि, prepareForSegue:sender: अभी भी लक्ष्य दृश्य नियंत्रक से prepareForSegue:sender: होगा। हालांकि यह देखने नियंत्रक अपरिपक्व के लिए segue होगा।

उम्मीद है की यह मदद करेगा।

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

1)। पहचान फ़ाइल के साथ अपने सभी विचारों को परिभाषित करें और पहचान निरीक्षक में स्टोरीबोर्ड आईडी भी।

2)। सुनिश्चित करें कि आप पहले दृश्य में एक नेविगेशन नियंत्रक जोड़ते हैं। स्टोरीबोर्ड में इसे चुनें और फिर संपादक> एम्बेड करें> नेविगेशन नियंत्रक

3)। अपने प्रथम श्रेणी में, "secondClass.h" आयात करें

 #import "ViewController.h #import "secondController.h" 

4)। IBAction में इस कमांड को जोड़ दें जिसमें सेग्यू का प्रदर्शन होता है

 secondController *next=[self.storyboard instantiateViewControllerWithIdentifier:@"second"]; [self.navigationController pushViewController:next animated:YES]; 

5)। @"second" सेकंडव्यू नियंत्रक वर्ग, स्टोरीबोर्ड आईडी है

स्टोरीबोर्ड सेगेज को स्टोरीबोर्ड के बाहर नहीं बनाया जा सकता है। कमियां होने के बावजूद आपको उसे तार करने की आवश्यकता होगी

UIStoryboardSegue संदर्भ स्पष्ट रूप से कहा:

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

आप अभी भी प्रोग्राम को स्टोरीबोर्ड को बता सकते हैं कि वर्तमान नियंत्रक का उपयोग कर एक नियंत्रक का उपयोग करके एक दृश्य नियंत्रक प्रस्तुत करें presentModalViewController: या pushViewController:animated: कॉल, लेकिन आपको स्टोरीबोर्ड उदाहरण की आवश्यकता होगी।

मुख्य बंडल के लिए बंडल शून्य के साथ एक नामित स्टोरीबोर्ड प्राप्त करने के लिए आप UIStoryboard क्लास विधि को कॉल कर सकते हैं।

storyboardWithName:bundle:

मैं रिवर्स-इंजीनियर और यूआईएसटीरोबोर्ड के सेगों के एक ओपन सोर्स (पुनः) का कार्यान्वयन किया: https://github.com/acoomans/segway

उस पुस्तकालय के साथ, आप प्रोग्राम को (प्रोग्रामर के बिना) स्टॉक्सबोर्ड को परिभाषित कर सकते हैं।

आशा है कि यह मदद कर सकता है

कुछ समस्याएं, वास्तव में:

सबसे पहले, उस प्रोजेक्ट में जो आपने हमारे लिए अपलोड किया था, सेग्यू "segue1" पहचानकर्ता नहीं है:

कोई पहचानकर्ता नहीं

यदि आपके पास पहले से ही नहीं है तो आपको उस पहचानकर्ता को भरना चाहिए।

दूसरा, जैसा कि आप टेबल व्यू से तालिका व्यू पर खड़े हो रहे हैं, आप initWithNibName को एक दृश्य नियंत्रक बनाने के लिए कह रहे हैं। आप वास्तव में instantiateViewControllerWithIdentifier का उपयोग करना चाहते हैं

Creating a segue programmatically को Creating a segue programmatically लिए यहां कोड नमूना Creating a segue programmatically :

 class ViewController: UIViewController { ... // 1. Define the Segue private var commonSegue: UIStoryboardSegue! ... override func viewDidLoad() { ... // 2. Initialize the Segue self.commonSegue = UIStoryboardSegue(identifier: "CommonSegue", source: ..., destination: ...) { self.commonSegue.source.showDetailViewController(self.commonSegue.destination, sender: self) } ... } ... override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // 4. Prepare to perform the Segue if self.commonSegue == segue { ... } ... } ... func actionFunction() { // 3. Perform the Segue self.prepare(for: self.commonSegue, sender: self) self.commonSegue.perform() } ... }