दिलचस्प पोस्ट
क्यों अहस्ताक्षरित int 0xFFFFFFFF int -1 के बराबर है? आईफोन कोर एनीमेशन – एक सर्कल को आकर्षित करना स्थानीय या अस्थायी चर के संदर्भ लौटाना MSVCP140.dll गायब है ओरेकल डाटाबेस में सी # से कनेक्ट करने के लिए आवश्यक न्यूनतम ग्राहक पदचिह्न क्या है? HRESULT: 0x800A03EC वर्कशीट.रेंज पर पंजीकरण-मुक्त COM के लिए मैनिफ़ेस्ट फ़ाइल जनरेट करें क्या सक्रिय विंडो पर विंडोज सिस्टम ईवेंट बदल गया है? प्रति कोर धागे की इष्टतम संख्या क्या अजगर के ज़िप जैसी एक पीएचपी फ़ंक्शन है? सीएसएस अस्वीकृति छद्म श्रेणी: नहीं () अभिभावक / पूर्वजों तत्वों के लिए पायथन कोड क्या यह अल्पविराम ऑपरेटर है? 'नाम' या 'आईडी' के साथ एचटीएमएल एंकर? एडीओ। नेट ईएफ – मॉडल के पहले दृष्टिकोण में विदेशी कुंजी संबंध को परिभाषित करने के लिए कैसे? जावा स्विंग: JFrame दिखाने से पहले मैं एक लॉगिन स्क्रीन कैसे लागू कर सकता हूं?

झटपट और स्विफ्ट में एक दृश्य नियंत्रक पेश करें

मुद्दा

मैंने Xcode 6 पर नई Swift की एक नज़र Xcode 6 शुरू कर दिया, और मैंने कुछ डेमो परियोजनाओं और ट्यूटोरियल की कोशिश की। अब मैं फंस गया हूं:

इंस्टेंटिअटिंग और फिर एक विशिष्ट स्टोरीबोर्ड से एक viewController पेश करते हुए

उद्देश्य-सी समाधान

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"myStoryboardName" bundle:nil]; UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"myVCID"]; [self presentViewController:vc animated:YES completion:nil]; 

स्विफ्ट पर यह कैसे प्राप्त करें?

वेब के समाधान से एकत्रित समाधान "झटपट और स्विफ्ट में एक दृश्य नियंत्रक पेश करें"

यह सभी नए सिंटैक्स की बात है, कार्यशीलता में बदलाव नहीं हुआ है:

 // Swift 3.0 let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil) let controller = storyboard.instantiateViewController(withIdentifier: "someViewController") self.present(controller, animated: true, completion: nil) 

यदि आपको init(coder:) coder init(coder:) साथ समस्या आ रही है, तो कृपया EridB का उत्तर देखें।

UIViewController को इन्स्तांत करने के लिए @ अकाशिव्स्की के उत्तर का उपयोग करने वाले लोगों के लिए और अपवाद हैं:

गंभीर त्रुटि: कक्षा के लिए अपरिवर्तित प्रारंभिक 'init (coder :)' का उपयोग

जल्द सलाह:

अपने गंतव्य UIViewController पर मैन्युअल रूप से required init?(coder aDecoder: NSCoder) कार्यान्वित करें required init?(coder aDecoder: NSCoder) जिसे आप required init?(coder aDecoder: NSCoder) कोशिश कर रहे हैं

 required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } 

यदि आपको अधिक विवरण की आवश्यकता है तो कृपया यहां मेरा उत्तर देखें

इस लिंक के कार्यान्वयन दोनों हैं:

स्विफ्ट:

 let viewController:UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("ViewController") as UIViewController self.presentViewController(viewController, animated: false, completion: nil) 

उद्देश्य सी

 UIViewController *viewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewController"]; 

इस लिंक में एक ही स्टोरीबोर्ड में व्यू नियंत्रक की शुरुआत करने के लिए कोड है

 /* Helper to Switch the View based on StoryBoard @param StoryBoard ID as String */ func switchToViewController(identifier: String) { let viewController = self.storyboard?.instantiateViewControllerWithIdentifier(identifier) as! UIViewController self.navigationController?.setViewControllers([viewController], animated: false) } 

आकाशवाणीस्की का उत्तर सिर्फ ठीक काम करता है! लेकिन, अगर आपको प्रस्तुत दृश्य नियंत्रक से कुछ परेशानी वापस आ रही है, तो यह विकल्प सहायक हो सकता है। यह मेरे लिए काम किया!

स्विफ्ट:

 let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil) let vc = storyboard.instantiateViewControllerWithIdentifier("someViewController") as! UIViewController // Alternative way to present the new view controller self.navigationController?.showViewController(vc, sender: nil) 

Obj सी:

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStoryboardName" bundle:nil]; UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"someViewController"]; [self.navigationController showViewController:vc sender:nil]; 
 // "Main" is name of .storybord file " let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) // "MiniGameView" is the ID given to the ViewController in the interfacebuilder // MiniGameViewController is the CLASS name of the ViewController.swift file acosiated to the ViewController var setViewController = mainStoryboard.instantiateViewControllerWithIdentifier("MiniGameView") as MiniGameViewController var rootViewController = self.window!.rootViewController rootViewController?.presentViewController(setViewController, animated: false, completion: nil) 

जब मैंने इसे AppDelegate में डाल दिया तो यह मेरे लिए ठीक काम किया

यदि आप इसे मौलिक ढंग से प्रस्तुत करना चाहते हैं, तो आपको कुछ ऐसा होना चाहिए, जैसे:

 let vc = self.storyboard!.instantiateViewControllerWithIdentifier("YourViewControllerID") self.showDetailViewController(vc as! YourViewControllerClassName, sender: self) 

अगर आपके पास कोई स्टोरीबोर्ड / एक्सब का उपयोग नहीं करते हुए एक विजिकोट्रॉलर है, तो आप इस विशेष उपकुलपति को नीचे कॉल की तरह पुश कर सकते हैं:

  let vcInstance : UIViewController = yourViewController() self.present(vcInstance, animated: true, completion: nil) 

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

मैंने एक बिल्ड टाइम स्क्रिप्ट बनाया है (जो आप यहां पहुंच सकते हैं ), जो दिए गए प्रोजेक्ट के भीतर सभी स्टोरीबोर्ड के दृश्य नियंत्रकों को एक्सेस और इंस्टाल्ट करने के लिए एक संकलक सुरक्षित तरीके से बनाएगा।

उदाहरण के लिए, मेन.स्टोरीबोर्ड में vc1 नामक नियंत्रक को तत्काल तत्काल बनाया जाएगा:

 let vc: UIViewController = R.storyboard.Main.vc1^ // where the '^' character initialize the controller 

स्विफ्ट 3 स्टोरीबोर्ड

 let settingStoryboard : UIStoryboard = UIStoryboard(name: "SettingViewController", bundle: nil) let settingVC = settingStoryboard.instantiateViewController(withIdentifier: "SettingViewController") as! SettingViewController self.present(settingVC, animated: true, completion: { })