मेरी समस्या यह है कि मैं स्टोरीबोर्ड और xib दोनों का उपयोग करने का तरीका ढूंढ रहा था। लेकिन मुझे स्टोरीबोर्ड को प्रोग्रामेटिक रूप से लोड और दिखाने का उचित तरीका नहीं मिल रहा है। परियोजना xib के साथ विकसित करना शुरू कर दिया गया था, और अब स्टोरीबोर्ड में सभी xib फ़ाइलों को घोंसला करना बहुत मुश्किल है। तो मैं कोड नियंत्रक के लिए alloc, init, push
के साथ कोड में ऐसा करने का एक तरीका ढूंढ रहा था। मेरे मामले में मेरे पास स्टोरीबोर्ड में केवल एक नियंत्रक है: UITableViewController
, जिसमें कुछ सामग्री के साथ स्थैतिक कक्ष हैं जो मैं दिखाना चाहता हूं। यदि कोई भी बड़े रिफैक्टरिंग के बिना xib और storyboard दोनों के साथ काम करने का उचित तरीका जानता है, तो मैं किसी भी मदद के लिए सराहना करता हूं।मैं कक्षा से प्रोग्रामेटिक रूप से स्टोरीबोर्ड कैसे लोड कर सकता हूं?
उत्तर
अपनी स्टोरीबोर्ड में विशेषता निरीक्षक पर जाएं और दृश्य नियंत्रक के पहचानकर्ता को सेट करें। फिर आप निम्न कोड का उपयोग कर उस व्यू कंट्रोलर को प्रस्तुत कर सकते हैं।
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"myViewController"];
vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:vc animated:YES completion:NULL];
विशेषता निरीक्षक में उस दृश्य नियंत्रक और नीचे दिए गए कोड के लिए पहचानकर्ता देने से काम करता है मेरे लिए
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
DetailViewController *detailViewController = [storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];
[self.navigationController pushViewController:detailViewController animated:YES];
प्रयास करें इस
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"Login"];
[[UIApplication sharedApplication].keyWindow setRootViewController:vc];
यदि आप अन्य उत्तरों में दिखाए गए अनुसार UINavigationController का उपयोग नहीं कर रहे हैं तो – latenitecoder
स्विफ्ट 3
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "viewController")
self.navigationController!.pushViewController(vc, animated: true)
स्विफ्ट 2
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("viewController")
self.navigationController!.pushViewController(vc, animated: true)
पूर्वापेक्षा
आपके विचार नियंत्रक करने के लिए एक स्टोरीबोर्ड आईडी असाइन करें।
आईबी> दिखाएँ पहचान निरीक्षक> पहचान> स्टोरीबोर्ड आईडी
स्विफ्ट (विरासत)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("viewController") as? UIViewController
self.navigationController!.pushViewController(vc!, animated: true)
संपादित करें: स्विफ्ट 2 Fred A. द्वारा एक टिप्पणी में सुझाव दिया
स्विफ्ट 2 में, आपको "as? UIViewController" जोड़ने की आवश्यकता नहीं है, संकलक स्वचालित रूप से –
निर्धारित करता है या आप केवल 'self.storyboard' कर सकते हैं और लाइन 1 और 2 मर्ज करें – Honey
तेज
navigationController और pushController में आप तेज 3 और 4 के लिए के लिए
present(vc, animated:true , completion: nil)
जगह ले सकता है, तो आप ऐसा कर सकते हैं। अच्छी प्रैक्टिस स्टोरीबोर्ड आईडी के बराबर स्टोरीबोर्ड का नाम सेट है।
enum StoryBoardName{
case second = "SecondViewController"
}
extension UIStoryBoard{
class func load(_ storyboard: StoryBoardName) -> UIViewController{
return UIStoryboard(name: storyboard.rawValue, bundle: nil).instantiateViewController(withIdentifier: storyboard.rawValue)
}
}
और उसके बाद आप इस तरह अपने ViewController में अपने स्टोरीबोर्ड लोड कर सकते हैं:
class MyViewController: UIViewController{
override func viewDidLoad() {
super.viewDidLoad()
guard let vc = UIStoryboard.load(.second) as? SecondViewController else {return}
self.present(vc, animated: true, completion: nil)
}
}
आपके द्वारा बनाए गए जब एक नया स्टोरीबोर्ड सिर्फ StoryboardID पर एक ही नाम की स्थापना की और में स्टोरीबोर्ड नाम जोड़ने आपका enum "स्टोरीबार्डनाम"
आप हमेशा रूट नियंत्रक पर कूद सकते हैं:
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *vc = [storyboard instantiateInitialViewController];
vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:vc animated:YES completion:NULL];
- 1. मैं अस्थायी रूप से फ़ॉन्ट कैसे लोड कर सकता हूं?
- 2. प्रोग्रामेटिक रूप से स्टोरीबोर्ड आईडी प्राप्त करें?
- 3. एक स्टोरीबोर्ड सेगू प्रोग्रामेटिक रूप से
- 4. मैं प्रोग्रामेटिक रूप से संपर्क कैसे जोड़ सकता हूं?
- 5. मैं रैम डिस्क प्रोग्रामेटिक रूप से कैसे बना सकता हूं?
- 6. मैं प्रोग्रामेटिक रूप से विंडोज़ फॉर्म कैसे बना सकता हूं?
- 7. मैं कोको विंडो प्रोग्रामेटिक रूप से कैसे बना सकता हूं?
- 8. मैं डेटाबेस से जावा क्लास कैसे लोड कर सकता हूं?
- 9. मैं सिल्वरलाइट एप्लिकेशन से प्रोग्रामेटिक रूप से maxItemsInObjectGraph प्रॉपर्टी कैसे सेट कर सकता हूं?
- 10. मैं Win7 प्रोग्रामेटिक रूप से स्क्रीन रेज़ोल्यूशन डायलॉग से मॉनीटर नंबर कैसे प्राप्त कर सकता हूं?
- 11. क्या मैं कक्षा को अनदेखा कर सकता हूं लेकिन बाहरी रूप से सील कर सकता हूं?
- 12. प्रोग्रामेटिक रूप से
- 13. मैं दृश्य नियंत्रक से स्टोरीबोर्ड सेगू कैसे बना सकता हूं?
- 14. मैं फ़ायरबग नेट पैनल डेटा प्रोग्रामेटिक रूप से कैसे उपभोग कर सकता हूं?
- 15. मैं एक डीओएम तत्व से अन्य शैली गुणों को प्रोग्रामेटिक रूप से कॉपी कर सकता हूं
- 16. क्या मैं सी # से टी 4 प्रोग्रामेटिक रूप से उपयोग कर सकता हूं?
- 17. मैं सी # का उपयोग कर एएसपी.Net विकास सर्वर प्रोग्रामेटिक रूप से कैसे चला सकता हूं?
- 18. मैं विंडोज डेस्कटॉप आइकन स्थानों को प्रोग्रामेटिक रूप से कैसे उपयोग कर सकता हूं?
- 19. यदि पथ/फ़ाइल शॉर्टकट है तो मैं प्रोग्रामेटिक रूप से परीक्षण कैसे कर सकता हूं?
- 20. मैं कोको NSSearchField प्रोग्रामेटिक रूप से कैसे रीसेट कर सकता हूं?
- 21. मैं एपीआई का उपयोग किए बिना प्रोग्रामेटिक रूप से खोज कैसे कर सकता हूं?
- 22. मैं अपने प्रोसेसर प्रकार को प्रोग्रामेटिक रूप से कैसे निर्धारित कर सकता हूं?
- 23. मैं किसी विशेष JVM उदाहरण प्रोग्रामेटिक रूप से सिस्टम गुण कैसे प्राप्त कर सकता हूं?
- 24. मैं सी में प्रोग्रामेटिक रूप से 'टी' को कैसे कार्यान्वित कर सकता हूं?
- 25. परीक्षण के लिए मैं ExpressJS के उदाहरण को प्रोग्रामेटिक रूप से कैसे बंद कर सकता हूं?
- 26. मैं ट्विटर उद्देश्यों को प्रोग्रामेटिक रूप से कैसे ट्रिगर कर सकता हूं?
- 27. मैं UIButton के वर्टिकल संरेखण को प्रोग्रामेटिक रूप से कैसे सेट कर सकता हूं - आईओएस
- 28. रुबी में उपज करने के लिए मैं प्रोग्रामेटिक रूप से तर्क कैसे पारित कर सकता हूं?
- 29. मैं Django मॉडल फ़ील्ड के max_length प्रोग्रामेटिक रूप से कैसे प्राप्त कर सकता हूं?
- 30. मैं लाटेक्स का उपयोग करके प्रोग्रामेटिक रूप से पीडीएफ कैसे उत्पन्न कर सकता हूं?
'[sb instantiateInitialViewController] 'यदि आप दृश्य के डिफ़ॉल्ट दृश्य नियंत्रक पर प्रारंभ करना चाहते हैं तो आसान है। – drewish
जेम्स, धन्यवाद! मैं स्टोरीबोर्ड के दृश्य को तुरंत चालू करने का तरीका जानने का प्रयास कर रहा हूं। आपका उत्तर (और कोकोको का प्रश्न) खोजने के लिए सबसे ताज़ा है। – bejonbee
जेम्स बीथ के कोड पर, किसी को उस UIViewControler * vc का पुन: उपयोग करना होगा यदि इसे वर्तमान व्यू कंट्रोलर के साथ आगे और पीछे स्विच किया गया हो। मुझे पता चला कि वीसी चारों ओर चिपक जाती है और स्टोरीबोर्ड निब तक तारित होती है जब तक कि उपयोगकर्ता नए दृश्य पर बटन दबाए, और अब इस कोड के पूर्व incantations से उस त्याग वीसी के साथ एक स्मृति रिसाव है। – SWoo