Xcode 4.5 स्टोरीबोर्ड 'बाहर निकलें'


102

मैंने अभी iOS6 सपोर्ट के लिए Xcode 4.5 स्थापित किया है, और मैंने अपने स्टोरीबोर्ड में 'Exit' नामक एक नया आइकन देखा है, जो कि 'First Responder' आदि के साथ मेरे व्यू कंट्रोलर्स के अंतर्गत सूचीबद्ध है। 'Exit' नामक एक छोटा हरा आइकन।

मैं इस पर कुछ भी पा सकता हूं और न ही यह बता सकता हूं कि इसका उपयोग कैसे किया जा सकता है।

किसी को भी इसके बारे में कुछ भी पता है, यह कैसे काम करता है, इसके लिए क्या है?


1
इसी तरह के एक प्रश्न पर मैंने यह उत्तर पोस्ट किया: stackoverflow.com/questions/12569316/… यह समझाने में मदद करता है कि बाहर निकलने के समय का उपयोग कैसे करें (सुविधा)
Eric

जवाबों:


72

इसे " अनविंड सीग " कहा जाता है । दुर्भाग्य से XCode 4.5 नई सुविधाओं की सूची में एक संक्षिप्त उल्लेख के अलावा इसके लिए अब तक कोई दस्तावेज नहीं है जो बताता है:

अनवार्ड सेगमेंट स्टोरीबोर्ड में दृश्यों के मौजूदा उदाहरणों में संक्रमण की अनुमति दे सकता है

अच्छी खबर यह है कि डब्ल्यूडब्ल्यूडीसी 2012 से उन प्राणियों (अन्य चीजों के बीच) को समझाने वाला एक सत्र है।

आप बस अपने डेवलपर खाते के विवरण के साथ Apple के iOS देव केंद्र में प्रवेश कर सकते हैं और फिर WWDC 2012 के वीडियो पृष्ठ पर जाएं और "अपने ऐप में स्टोरीबोर्ड को अपनाना" देखें (यह ऊपर से पांचवां है)। ।


अद्यतन: यहाँ Apple के प्रलेखन से विषय पर कुछ और जानकारी दी गई है

एक प्लेसहोल्डर ऑब्जेक्ट जिसे सीडिंग के लिए एक्ज़िट नाम दिया गया है। डिफ़ॉल्ट रूप से, जब कोई उपयोगकर्ता किसी चाइल्ड सीन को खारिज करता है, तो उस दृश्य के लिए व्यू कंट्रोलर पैरेंट सीन को अनइंस्टॉल (या रिटर्न) करता है - यह वह दृश्य है, जो मूल रूप से चाइल्ड सीन में परिवर्तित होता है। हालाँकि, एक्ज़िट ऑब्जेक्ट एक दृश्य नियंत्रक को एक मनमाना दृश्य के लिए खोल देने में सक्षम बनाता है।

(IOS6 docset से> सामान्य> प्रारंभ करना)

और यहाँ एक अच्छा उदाहरण है कि आप किसी को कैसे लागू कर सकते हैं


एक और अपडेट:

इस विषय के बारे में Apple का एक तकनीकी नोट यहां दिया गया है


3
ठीक है, तो आप इसका उपयोग कैसे करते हैं? व्यू-कंट्रोलर के तल पर निकास ऑब्जेक्ट से नियंत्रण-क्लिक करने की कोशिश की, लेकिन यह किसी भी चीज़ से लिंक नहीं होगा।
शिम

4
आपको मूल रूप से अपने लेग सेग के लिए एक विधि को परिभाषित करना होगा और फिर एक तत्व से exitबटन से कनेक्ट करना होगा जिस विधि को आप कॉल करना चाहते हैं। आप यहां एक उदाहरण पा सकते हैं (मैंने अपना उत्तर और उदाहरण को शामिल करने के लिए अद्यतन किया है)
अलादीनिन

1
-1: बहुत सारे शब्द, थोड़ी उपयोगी जानकारी। इस पर पढ़ने के बाद और इसे अपने स्वयं के ऐप में उपयोग करने के बाद, मैंने इस उत्तर को लिखा जो उम्मीद से अधिक उपयोगी है: stackoverflow.com/a/25829835/901641
ArtOfWarfare

1
यही कारण है कि मुझे Apple गैर-मौजूद दस्तावेज पसंद है। यार, किसी को वहां से निकाल देना चाहिए।
बतख

@SpaceDog शायद यही हुआ है, उन सभी को निकाल दिया गया है और प्रलेखन लिखने के लिए कोई नहीं बचा है: / मुझे WWDC वीडियो पसंद है हालांकि - 2012 जाहिरा तौर पर वह वर्ष है जब Apple चरम पर था।
turingtested

10

कल्पना कीजिए कि आपके स्टोरीबोर्ड में विचारों का एक क्रम है:

A -> ... -> Z

आप दृश्य पर एक बटन रखना चाहते हैं Zजो उपयोगकर्ता को सभी तरह से वापस जाने की अनुमति देता है A

तो आपको जो करने की ज़रूरत है वह वह दृश्य है जिसे आप सभी तरह से वापस करना चाहते हैं, इस मामले में A, एक उदाहरण विधि जिसे एक के रूप में चिह्नित किया जाता है IBActionऔर एक एकल प्रकार के पैरामीटर में ले जाता है UIStoryboardSegue *। विधि और चर का नाम मायने नहीं रखता। कार्यान्वयन के भीतर आप क्या करते हैं, इससे कोई फर्क नहीं पड़ता। यहाँ एक उदाहरण है:

Obj सी:
में Aकी इंटरफेस (नहीं Z'ओं):

- (IBAction)cancelSignup:(UIStoryboardSegue *)unwindSegue;

में Aके कार्यान्वयन (नहीं Z'ओं):

- (IBAction)cancelSignup:(UIStoryboardSegue *)unwindSegue {
    // Only "implemented" to satisfy a respondsToSelector: search.
    // You can actually implement more stuff here, if you want, IE, if
    // you need to reach out to a server to mention that this screen was
    // returned to from a later screen.
}

स्विफ्ट:
में Aकी स्रोत (नहीं Z'ओं):

@IBAction func cancelSignup(unwindSegue: UIStoryboardSegue) {
    // Only "implemented" to satisfy a respondsToSelector: search.
    // You can actually implement more stuff here, if you want, IE, if
    // you need to reach out to a server to mention that this screen was
    // returned to from a later screen.
}

अब, अपने स्टोरीबोर्ड के भीतर, controlपर एक तत्व से खींचें Zकरने के लिए (आईई, एक बटन को रद्द) Zके Exit। यह उन सभी दृश्यों के माध्यम से स्कैन करेगा जो दृश्य पदानुक्रम में उच्च हैं जो एक क्रिया के रूप में IBActionकेवल एक को स्वीकार करता UIStoryboardSegue *है और आपको लेने के लिए उन्हें सूचीबद्ध करता है।

उम्मीद है कि यह मौजूदा उत्तरों की तुलना में अधिक सीधे आगे और सहायक था। मैंने पाया कि यह लिंक विशेष रूप से उपयोगी था, इसलिए यदि मेरा उत्तर पढ़ने के बाद भी आप फजीहत कर रहे हैं, तो शायद यह आपकी मदद कर सके (मैंने इस लंबे लेख से सभी उपयोगी जानकारी को संक्षिप्त उत्तर में संक्षेप में बताने की कोशिश की): http://www.freelancemadscience.com/fmslabs_blog/2012/9/24/advanced-storyboard-techniques.html


4

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

  1. IBAction के रूप में चिह्नित

  2. एक पैरामीटर लेता है जो एक UIStoryboardSegue * है

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

मैंने अब यहां दुनिया का सबसे सरल उदाहरण भी पोस्ट किया है:

https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/ch19p638presentedViewControllerStoryboard (12 जुलाई 2013 को निर्धारित)

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


3

बस आवश्यकताओं की थोड़ी सूक्ष्मता जोड़ने से परिभाषा में मदद मिल सकती है। यह Xcode 4.6 में प्रयोग पर आधारित है। मैंने पाया कि यह विशेष रूप से और केवल घोषित (!) विधि है जो एक्सकोड से वांछित नियंत्रण-ड्रैग प्रतिक्रिया को सक्षम करता है। यहाँ मुझे पूर्ण आवश्यकताएं मिलीं:

  • के रूप में चिह्नित IBAction
  • एक पैरामीटर लेता है जो UIStoryboardSegue*
  • आपके पास एक ऐक्शन घोषित होना चाहिए (लेकिन जरूरी नहीं कि [ .Mकार्यान्वयन अनुभाग में एक विधि ])।
  • यह किसी भी वर्ग के इंटरफ़ेस डिक्लेरेशन में हो सकता है, यहां तक .Mकि एफ़डिएट क्लास को छोड़कर, का इंटरफ़ेस सेक्शन भी । (मैंने नियंत्रक पदानुक्रम में इसकी स्थिति पर कोई निर्भरता नहीं देखी थी। आप किसी भी पुरानी फ़ाइल को जोड़ सकते हैं और सिस्टम उन सभी विधियों को एकत्र करने के लिए लगता है जो UIStoryboardSegueपैरामीटर हैं और उन्हें बाहर निकलें आइकन के मेनू पर प्रदर्शित करते हैं।) ध्यान दें कि नियंत्रण खींचें। यदि आप स्टोरीबोर्ड संपादक में हेरफेर कर रहे हैं, तो यह विधि आपको अपनी विधि दिखाएगा यदि विधि दृश्य के वर्ग में है, लेकिन यह बिना कॉलोन के दिखाई देगा और रनटाइम पर किसी भी कार्रवाई को ट्रिगर नहीं करता है।

उदाहरण: -(IBAction)anymethodname:(UIStoryboardSegue *)myvariable;

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.