कंटेनर दृश्य नियंत्रक "न बुलाया जाए। आप एक कस्टम कंटेनर दृश्य नियंत्रक को लागू कर रहे हैं, तो आप सांकेतिक शब्दों में बदलना चाहिए बच्चे दृश्य नियंत्रक खुद वस्तुओं अगर आप चाहते हैं उन्हें संरक्षित किये जाने वाले "
वहाँ सरल नियमों कि मैंने पाया हैं:।
1.Embedded (बच्चे) देखें नियंत्रक को राज्य संरक्षण प्रक्रिया में पहले से ही बनाया जाना चाहिए और पैरेंट व्यू कंट्रोलर में जोड़ा जाना चाहिए। इसलिए, अगर आप स्टोरीबोर्ड का उपयोग करते हैं तो कुछ भी करने की ज़रूरत नहीं है अन्यथा आपको बाल दृश्य नियंत्रक को तुरंत चालू करना होगा और इसे मैन्युअल रूप से जोड़ना होगा:
-(void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"Did load");
MyChildViewController *childViewController = [MyChildViewController new];
[self addChildViewController:childViewController];
[childViewController didMoveToParentViewController:self];
self.childVC = childViewController;
}
आप -viewDidLoad
पर बच्चे के दृश्य को जोड़ सकते हैं o आर बाद में इसके लिए self.childVC.view.frame = [self frameForChildController]; [self.view addSubview:self.childVC.view];
का उपयोग करें।
माता पिता की -encodeRestorableStateWithCoder:
खुद में बच्चे दृश्य नियंत्रक को बचाने के लिए कोई जरूरत नहीं 2.You, लेकिन आप -encodeObject:forKey:
का उपयोग कर उस वस्तु के लिए एक संदर्भ सांकेतिक शब्दों में बदलना चाहिए। आप संदर्भ है, तो आप इस तरह यह कर सकते हैं:
-(void)encodeRestorableStateWithCoder:(NSCoder *)coder
{
NSLog(@"Encode");
UIViewController *childViewController = self.childVC;
[coder encodeObject:childViewController forKey:@"ChildVC"];
[super encodeRestorableStateWithCoder:coder];
}
https://stackoverflow.com/a/13279703/2492707 यदि आप स्टोरीबोर्ड का उपयोग बच्चे कुलपति के संदर्भ में प्राप्त करने के लिए। या आप कुछ इस तरह सरल लिख सकते हैं:
-(void)encodeRestorableStateWithCoder:(NSCoder *)coder
{
NSLog(@"Encode");
UIViewController *childViewController = [self.childViewControllers objectAtIndex:0]; //[self.childViewControllers lastObject];
[coder encodeObject:childViewController forKey:@"ChildVC"];
[super encodeRestorableStateWithCoder:coder];
}
3. एंबेडेड (बच्चे) दृश्य नियंत्रक पहले से ही बनाया जाना चाहिए और राज्य बहाली की प्रक्रिया पर जनक दृश्य नियंत्रक को जोड़ा गया। इसलिए, यदि आपने पहले पैराग्राफ में सबकुछ किया है, तो यहां कुछ और करने के लिए कुछ भी नहीं है।
4. "इस मामले में, हालांकि, हम बाल दृश्य नियंत्रक को डीकोड नहीं करते हैं। हम कर सकते हैं, लेकिन वास्तव में हमें इसकी आवश्यकता नहीं है।MyChildViewController ऑब्जेक्ट अपनी स्थिति को पुनर्स्थापित करेगा। हम केवल आदेश क्रम MyChildViewController उदाहरण के लिए नीचे श्रृंखला चलने के लिए प्राप्त करने के लिए इस संदर्भ इनकोडिंग और बचाने और पुनर्स्थापित करूँ उस पर "।
-(void)decodeRestorableStateWithCoder:(NSCoder *)coder
{
NSLog(@"Decode");
[super decodeRestorableStateWithCoder:coder];
}
This पुस्तक कंटेनर विचारों के साथ राज्य के संरक्षण को समझने के लिए मुझे मदद मिलती है। इसके अलावा look इस पुस्तक के लिए एक अच्छा उदाहरण के लिए
आप addChildViewController साथ माता-पिता के लिए बच्चे जोड़ा था:? – jsd
आप didMoveToParentViewController फोन किया था? तुम्हारे जाने के बाद जनक दृश्य नियंत्रक के लिए बच्चे दृश्य नियंत्रक जोड़ा विधि – HermioneGreen
कंटेनर दृश्य चाहिए स्वचालित रूप से ऐसा कर रहे हैं। मुझे माता-पिता बच्चे दृश्य नियंत्रकों से इसका संदर्भ मिल रहा है। –