2012-04-05 15 views
16

मैं apple spec के अनुसार कस्टम कंटेनर व्यू बना रहा हूं। मैं स्टोरीबोर्ड का उपयोग तीन स्थिर बच्चे UIViewControllers से कनेक्ट करने के लिए करना चाहता हूं। स्टोरीबोर्ड में UINavigationController के लिए देखा गया Relationship के माध्यम से कनेक्ट करने के लिए स्टोरीबोर्ड में में कोई आसान तरीका है?स्टोरीबोर्ड और कस्टम कंटेनर व्यू कंट्रोलर

NavigationController 'relationship'

मेरे शोध के आधार पर, ऐसा लगता है जैसे यह संभव नहीं है।

+1

किसी भी खुशी:

आप इस लिंक पर परियोजना मिल सकती है? मैं बस एक ही प्रश्न पोस्ट करने वाला था ... – jackslash

+0

मुझे लगता है कि यह संभव नहीं है। मैं प्रोग्रामिक रूप से किसी भी कस्टम कंटेनर स्थापित करने के लिए झुका हुआ है। – Stephen

+0

ठीक है, धन्यवाद। मैं अब के लिए पुराने तरीके से xibs का उपयोग करने के साथ चला गया, भविष्य में मुझे लगता है कि आपके लेख में बीमार डिजाइन कस्टम segues की तरह। – jackslash

उत्तर

-1

मैंने यह नहीं किया है लेकिन यह एक दिलचस्प समस्या है। क्या आपने स्टोरीबोर्ड में उन्हें जोड़ने की कोशिश करने से पहले अपने कंटेनर नियंत्रक में अपने बच्चे के दृश्य नियंत्रकों को परिभाषित किया था (आप ऐसा कर सकते हैं - कोई कोड दिखाया नहीं गया है)? मार्ग घटनाओं बच्चे को ठीक से करने के लिए iOS के लिए यह हो सकता है कि यह सामान्य वर्गों जहां सिर्फ उन्हें खींच सकते हैं के साथ पसंद नहीं है

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

वैसे भी - एक अनुमान ...

+4

मेरे पास जो मुद्दा है वह यह है कि ऐप्पल UITabBarController और UINavigationController को इन्हें रखने की अनुमति देता है विशेष 'रिलेशनशिप' गुण जो कस्टम ऑब्जेक्ट्स नहीं हैं। मेरे पास कंट्रोलर ग्राफ़ के हिस्से के रूप में स्टोरीबोर्ड में बाल दृश्य नियंत्रक हैं, लेकिन सीएनटीएल-क्लिक की कोई मात्रा मुझे तार करने की अनुमति नहीं देती है। – Stephen

+0

क्या यह एक बग नहीं है? – Ricardo

+2

स्टीफन - बिल्कुल। वेनिला कंटेनर व्यू के साथ एकमात्र चीज जो मैं देखता हूं वह एक अन्य व्यू कंट्रोलर को "एम्बेड" करने का विकल्प है। बस एक ठो। दो या दो से अधिक नहीं। यही वह हिस्सा है जिसने मुझे अपने सिर को खरोंच कर दिया है। यह एक कंटेनर है, आखिरकार, तो बस एक अच्छा एम्बेडिंग क्या है? : \ –

0

आप UITabBarController या UINavigationController उपवर्गीकरण की कोशिश की?

आप इनमें से किसी एक से विस्तारित अपनी कस्टम कक्षा बना सकते हैं और फिर इसे अपने स्टोरीबोर्ड में सेट कर सकते हैं - इस प्रकार आप एक ही रिश्तों को बनाने की अनुमति देते हैं। फिर आप टैबबार को छुपा सकते हैं और जो भी कार्यक्षमता चाहते हैं उसे जोड़ सकते हैं।

enter image description here

1

आप इसके लिए कंटेनर दृश्य का उपयोग कर सकते हैं। कंटेनर व्यू स्वचालित रूप से नए व्यू कंट्रोलर से रिश्ते बनाता है।

+0

ओपी पूछ रहा है कि कैसे नियंत्रकों से कनेक्ट करें। – Fattie

+0

यदि वह कंटेनर व्यू का उपयोग करता है, तो नियंत्रक स्वचालित रूप से कनेक्ट हो जाएगा। –

+0

नहीं, यह नहीं है। कर के देखो। यह हो सकता है कि हम विभिन्न चीजों के बारे में बात कर रहे हों। बस यहां दिशानिर्देशों का पालन करें: http://stackoverflow.com/a/23403979/294884 दृश्य नियंत्रक किसी भी तरह से उपलब्ध नहीं है। आपको ऊपर वर्णित दो विधियों में से एक का उपयोग करना होगा। – Fattie

5

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

enter image description here

खींचें एक कंटेनर दृश्य: यह इस तरह दिखता है।

फिर आप कंटेनर व्यू से दूसरे व्यू कंट्रोलर पर नियंत्रण-खींचें जिसे आप कंटेनर दृश्य होस्ट करना चाहते हैं। आईबी आपके लिए एक "एम्बेड segue" सेट करता है। जब अभिभावक दृश्य नियंत्रक के सामग्री दृश्य को लोड किया जाता है तो एम्बेड सेग्यू लागू होता है। एम्बेड सेग्यू अभिभावक/बाल दृश्य नियंत्रक संबंध स्थापित करता है और आपको आवश्यक हाउसकीपिंग करता है। यह आसान और दर्द रहित है।

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

इस परियोजना को जिथब पर एक नज़र डालें जो दिखाता है कि कंटेनर दृश्यों और एम्बेडिंग सिग्स का उपयोग करके माता-पिता में 2 स्थैतिक UITableViewControllers को शामिल करने के लिए एम्बेड सेग का उपयोग कैसे करें। यह प्रोजेक्ट माता-पिता और बच्चे वीसी के लिए एक-दूसरे के साथ संवाद करने के लिए कस्टम प्रोटोकॉल सेट करता है।ReadyForSegue विधि में माता-पिता दोनों बच्चे वीसी के लिए पॉइंटर्स सहेजते हैं, और खुद को बाल वीसी दोनों के प्रतिनिधियों के रूप में भी सेट करते हैं ताकि बच्चा माता-पिता को वापस संवाद कर सके। https://github.com/DuncanMC/test

+1

किसने मेरा जवाब वोट दिया और क्यों? अगर आपको लगता है कि मेरा जवाब गलत है या किसी भी तरह गरीब है, तो कृपया कहें कि मेरा विचार असफल रहा है –

+0

हाय डंकन, आपने समझाया है कि कंटेनर दृश्यों का उपयोग कैसे करें। ध्यान दें कि आपके पिछले अनुच्छेद में आप कहते हैं ** "readyForSegue विधि माता-पिता दोनों बच्चे वीसी के लिए पॉइंटर्स सहेजता है" **। यह प्रश्न है ** इस प्रश्न का पूरा अंक **। ध्यान दें कि आप स्टोरीबोर्ड पर ऐसा नहीं कर सकते - जो हास्यास्पद है, ऐप्पल गड़बड़ है। जैसा कि आप अपने डेमो प्रोजेक्ट में दिखाते हैं, आपको इसे कोड में करना होगा। – Fattie

+0

मुझे एक बड़ी समस्या की तरह प्रतीत नहीं होता है। ReadyForSegue विधि आपके कनेक्शन को तार करने के लिए एक साफ, आसान जगह है। एक और संभावना यह है कि व्यू कंट्रोलर के पास एक parentViewController प्रॉपर्टी होती है जो या तो वीसी के माता-पिता के लिए शून्य या अंक होती है, और वीसी में एक बच्चे दृश्य नियंत्रक संपत्ति होती है जिसमें अभिभावक व्यू कंट्रोलर के बच्चों की एक सरणी होती है। उन दो चीजें आपको अपने माता-पिता और बच्चे/बच्चों तक पहुंच प्रदान करती हैं, हालांकि यदि आपके पास कई बच्चे दृश्य नियंत्रक हैं तो आपको उन्हें अलग करने का एक तरीका चाहिए। –

संबंधित मुद्दे