वास्तव में यह सिर्फ एक डेटा पास समस्या नहीं है क्योंकि यह एक कार्यक्रम नियंत्रण और डाटा हस्तांतरण सवाल एक साथ है। यहां तक कि आपको अपने ऐप की अवधारणा के बारे में भी पुनर्विचार करना होगा, क्योंकि आप स्टोरीबोर्ड के अर्थ के बिना स्टोरीबोर्ड का उपयोग करना चाहते हैं, यह आपके ऊपर है और मुझे उम्मीद है कि आपके पास जो भी करना है, उसके लिए आपके पास अच्छा कारण है।
तो जब आपने सेग्यू का उपयोग न करने का निर्णय लिया तो आपने नए नियंत्रक को तुरंत चालू करने और इसके साथ डेटा स्थानांतरित करने का नया और आरामदायक तरीका खो दिया और आपको नियंत्रण और डेटा को दो अलग-अलग चरणों में स्थानांतरित करना होगा। जब आप स्टोरीबोर्ड में एक और दृश्य को तुरंत चालू करते हैं (जैसे आप तत्काल ViewControllerWithIdentifier के साथ करते हैं :) आपने बस एक नया नियंत्रक तुरंत चालू किया और नियंत्रण स्थानांतरित किया लेकिन डेटा नहीं। बस इसके बारे में सोचें क्योंकि आपने एक पुराने तरीके से एक एक्सबी से एक नए नियंत्रक को तुरंत चालू किया है (इसलिए आपको initWithCoder का उपयोग करना होगा: या दूसरे व्यू कंट्रोलर में awakeFromNib के रूप में स्टोरीबोर्ड initWithName: बंडल नहीं कॉल करेगा :), लेकिन कुछ और नहीं किया ।
तो आपके पास एक नया नियंत्रक होगा (यह दूसरे स्टोरीबोर्ड के पहचान भाग में नामित है) जो ब्रह्मांड में किसी भी रिश्ते या किसी अन्य चीज़ के साथ कनेक्शन के बिना लटक रहा है (जैसा स्टोरीबोर्ड चित्र इसे अच्छी तरह से दिखाता है) और आप कर सकते हैं इसके साथ आप क्या चाहते हैं।
तो आप कुछ करना चाहते हैं और आपको पिछले स्टोरीबोर्ड (व्यू कंट्रोलर) से डेटा चाहिए। आपको जो चाहिए वह दूसरे स्टोरीबोर्ड (व्यू कंट्रोलर) पर डेटा उपलब्ध करा रहा है, और जैसा कि आप जानते हैं कि इसके लिए बहुत सारे समाधान हैं जो स्टोरीबोर्ड मौजूद होने से पहले लंबे समय तक उपलब्ध थे।
तो आपके कोड के संबंध में, "डेटा स्थानांतरण" आपके डिज़ाइन के आधार पर है, चाहे दोनों नियंत्रक एक-दूसरे के सबक्लास हैं या जो कुछ भी ...
यदि आप सबक्लासिंग से निपटना पसंद नहीं करते हैं और जितना संभव हो सके उन्हें डीकॉप्लिंग करना पसंद करते हैं, तो सबसे अच्छा तरीका केवल पहले नियंत्रक में अपने डेटा की संपत्ति बनाते हैं और उन्हें दूसरे से संदर्भित करते हैं (पहले के आयात के बाद ज फ़ाइल) और बस में संदर्भित viewDidLoad या initWithCoder में है: या कहीं भी जहाँ आप उन्हें जरूरत है,
secondViewControllerdata = firstViewControllerdata.thatDataProperty
बेशक
के रूप में आप रिवर्स में भी ऐसा ही है और दूसरी नियंत्रक की संपत्ति बनाने के लिए और उल्लेख कर सकते हैं अपने पहले दृश्य नियंत्रक में इसे करने के लिए।
[देखें नियंत्रकों के बीच डाटा पासिंग] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) –
मैं नहीं इस पोस्ट में एक समाधान दिख रहा है। मैं तत्काल नियंत्रक का उपयोग कर रहा हूं क्योंकि मैं segues का उपयोग नहीं करता हूं। तो क्या मैं अभी भी readyforsegue का उपयोग कर सकता हूं क्या कोई सीगू नहीं है? – halloway4b
जहां एक व्यू कंट्रोलर तत्काल है, उसे यह नहीं बदला जाना चाहिए कि आप इसे संदेश कैसे पास करते हैं। –