2012-12-13 20 views
98

मैं आईओएस के विकास के लिए नया हूं और हाल ही में एक्सकोड 4.5 में शुरू किया है। मैंने प्रत्येक दृश्य नियंत्रक के लिए देखा कि मैं स्टोरीबोर्ड आईडी सहित कुछ पहचान चर सेट कर सकता हूं। यह क्या है और मैं इसका उपयोग कैसे कर सकता हूं?स्टोरीबोर्ड आईडी क्या है और मैं इसका उपयोग कैसे कर सकता हूं?

enter image description here

मैं stackoverflow पर खोज शुरू कर दिया है और इसके लिए कोई स्पष्टीकरण नहीं पा सके। मुझे लगता है कि यह केवल कुछ बेवकूफ लेबल नहीं है जिसे मैं अपने नियंत्रक को याद रखने के लिए सेट कर सकता हूं? यह क्या करता है?

उत्तर

117

स्टोरीबोर्ड आईडी एक स्ट्रिंग फ़ील्ड है जिसका उपयोग आप उस स्टोरीबोर्ड व्यू कंट्रोलर के आधार पर एक नया व्यू कंट्रोलर बनाने के लिए कर सकते हैं। एक उदाहरण उपयोग किसी भी ViewController से होगा:

//Maybe make a button that when clicked calls this method 

- (IBAction)buttonPressed:(id)sender 
{ 
    MyCustomViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MyViewController"]; 

    [self presentViewController:vc animated:YES completion:nil]; 
} 

यह ViewController आप "MyViewController" अपने वर्तमान दृश्य नियंत्रक ऊपर प्रस्तुत

नामित और स्टोरीबोर्ड के आधार पर एक MyCustomViewController पैदा करेगा और अगर आप अपने एप्लिकेशन में हैं स्विफ्ट

@IBAction func buttonPressed(sender: AnyObject) { 
    let vc = storyboard?.instantiateViewControllerWithIdentifier("MyViewController") as MyCustomViewController 
    presentViewController(vc, animated: true, completion: nil) 
} 
: आप इस्तेमाल कर सकते हैं

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" 
                 bundle: nil]; 

संपादित प्रतिनिधि स्विफ्ट के लिए

संपादित करें> = 3:

@IBAction func buttonPressed(sender: Any) { 
    let vc = storyboard?.instantiateViewController(withIdentifier: "MyViewController") as! ViewController 
    present(vc, animated: true, completion: nil) 
} 

और

let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil) 
+0

आइए इसे आज़माएं, और आप 'self.storyboard' – RTB

+0

self.storyboard को किसी भी व्यू कंट्रोलर से कैसे एक्सेस किया जा सकता है। मैं अब अपना जवाब संपादित करूँगा ताकि आप – Eric

+0

देख सकें और यदि मेरे ऐपडिलेगेट या किसी अन्य वर्ग से इसे एक्सेस करने की आवश्यकता हो तो क्या होगा? – RTB

7

Xcode 8 और स्विफ्ट 3 के लिए एरिक के जवाब देने के लिए जोड़ सकते हैं और इसे अद्यतन करने के लिए:

स्टोरीबोर्ड आईडी वास्तव में क्या करता है नाम का तात्पर्य है: यह पहचानता है। बस यह स्टोरीबोर्ड फ़ाइल में नियंत्रक को पहचानता है। इस प्रकार स्टोरीबोर्ड जानता है कि कौन सा व्यू कंट्रोलर है।

अब, नाम से भ्रमित न हों। एक स्टोरीबोर्ड आईडी 'स्टोरीबोर्ड' की पहचान नहीं करता है। ऐप्पल के दस्तावेज के मुताबिक, एक स्टोरीबोर्ड, 'आपके ऐप के यूजर इंटरफेस के सभी या हिस्से के लिए व्यू कंट्रोलर का प्रतिनिधित्व करता है।' इसलिए, जब आपके पास नीचे दी गई तस्वीर की तरह कुछ है, तो आपके पास मेन.स्टोरीबोर्ड नामक स्टोरीबोर्ड है जिसमें दो व्यू कंट्रोलर हैं, जिनमें से प्रत्येक को स्टोरीबोर्ड आईडी (स्टोरीबोर्ड में उनकी आईडी) दी जा सकती है।

enter image description here

आप का दृष्टांत और वापसी उस दृश्य नियंत्रक के लिए एक दृश्य नियंत्रक के स्टोरीबोर्ड आईडी का उपयोग कर सकते हैं। फिर आप इसे वांछित करने और पेश करने के लिए आगे बढ़ सकते हैं, हालांकि आप चाहते हैं। एरिक के उदाहरण का उपयोग करने के लिए, मान लीजिए कि आप पहचानकर्ता 'MyViewController' जब एक बटन दबाया जाता है, तो आप इसे इस तरह से करना होगा के साथ एक दृश्य नियंत्रक प्रस्तुत करना चाहते हैं:

@IBAction func buttonPressed(sender: Any) { 
    // Here is where we create an instance of our view controller. instantiateViewController(withIdentifier:) will create an instance of the view controller every time it is called. That means you could create another instance when another button is pressed, for example. 
    let vc = storyboard?.instantiateViewController(withIdentifier: "MyViewController") as! ViewController 
    present(vc, animated: true, completion: nil) 
} 

कृपया वाक्य रचना में परिवर्तनों पर ध्यान दें।

+0

पीले चेतावनी आइकन इंगित करता है कि दूसरे दृश्य नियंत्रक के पास कोई प्रविष्टि बिंदु और/या आईडी नहीं है। इसे स्टोरीबोर्ड आईडी या इसे स्टोरीबोर्ड में किसी अन्य व्यू कंट्रोलर से कनेक्ट करके संबोधित किया जा सकता है। इस तरह, स्टोरीबोर्ड जानता है कि कैसे पहुंचे और इसकी पहचान कैसे करें। – Taiwosam

+0

मैं स्टोरीबोर्ड आईडी फ़ील्ड नहीं ढूंढ पाया, इसलिए तस्वीर के लिए धन्यवाद। यह एक्सकोड 9 पर एक ही स्थिति में है। –