डब्ल्यूडब्ल्यूडीसी 2011 सत्र 102 में, ऐप्पल ने व्यू कंट्रोलर कंटेंटेशन पेश किया, जो कस्टम व्यू कंट्रोलर कंटेनर बनाने की क्षमता है, UITabBarController
, UINavigationController
, और इसी तरह के समान है।आईओएस 5 में कंट्रोलर कंटेंटमेंट कैसे काम करता है?
मैंने कई बार उदाहरण देखे। इस पैटर्न से जुड़े तरीकों का झुकाव है, लेकिन उन्हें बिल्कुल समझना थोड़ा मुश्किल था। मैं यहां पोस्ट करने जा रहा हूं जो मुझे लगता है कि क्या चल रहा है और देखें कि क्या समुदाय मेरे संदेह की पुष्टि करेगा या पुष्टि करेगा।
परिदृश्य 1: कोई माता-पिता से एक नया जनक दृश्य नियंत्रक
[vc willMoveToParentViewController:self];
[self addChildViewController:vc];
[self.view addSubview:vc.view]; // or something like this.
[vc didMoveToParentViewController:self];
स्थानांतरण करने के लिए पहले दो लाइनों, दिए गए आदेश में होते हैं या वे ही उल्टा हो सकता है?
परिदृश्य 2: एक माता पिता के दृश्य नियंत्रक से कोई जनक दृश्य नियंत्रक
[vc willMoveToParentViewController:nil];
[vc.view removeFromSuperview];
[vc removeFromParentViewController];
यह भी आवश्यक [vc didMoveToParentViewController:nil]
कॉल कर सकता करने के लिए बदल रहे हैं? सत्र 102 में इस उदाहरण में नहीं किया गया है, लेकिन मुझे नहीं पता कि यह चूक है या नहीं।
परिदृश्य 3: एक माता पिता को देखने के नियंत्रक से दूसरे
यह स्थानांतरण करने के लिए संभावना है, निम्नलिखित तरीके से हो जाएगा, क्योंकि प्रत्येक जनक दृश्य नियंत्रक में तर्क समझाया की जाएगी। यह सामान्य रूप में कैसे दृश्य नियंत्रक रोकथाम काम करना चाहिए है,:
// In the old parent
[vc willMoveToParentViewController:nil];
[vc.view removeFromSuperview];
[vc removeFromParentViewController];
// In the new parent
[vc willMoveToParentViewController:self];
[self addChildViewController:vc];
[self.view addSubview:vc.view];
[vc didMoveToParentViewController:self];
प्रश्न
मेरा मुख्य सवाल यह है? क्या ऊपर दिए गए यांत्रिकी सही हैं?
addChildViewController
पर कॉल करने से पहले willMoveToParentViewController
पर कॉल करना आवश्यक है? यह मेरे लिए तार्किक आदेश की तरह लगता है, लेकिन क्या यह सख्ती से जरूरी है?
removeFromParentViewController
पर कॉल करने के बाद didMoveToParentViewController:nil
पर कॉल करना आवश्यक है?
समस्या यह थी कि जब मैंने आईओएस 5 टैग जोड़ने की कोशिश की, तो मैंने गलती से प्रवेश किया, जिसने पोस्ट को जोड़ा/भले ही मैंने इसे लिखना/संपादित नहीं किया था। मैंने इसे हटाने की कोशिश की लेकिन फिर पाया कि मैं इसे हटाने के लिए केवल * वोट * कर सकता हूं। –