2012-01-19 9 views
15

मेरे पास एक मुख्य दृश्य नियंत्रक है जो मेरे 2 डी ओपनजी ईएस व्यू के लिए ड्राइंग का ख्याल रखता है, और एक बाल व्यू कंट्रोलर बटन प्रबंधक जो यह निर्धारित करता है कि लॉन्च के दौरान कौन से बटन लोड और ड्रा करते हैं।मैं बाल दृश्य नियंत्रक से अभिभावक दृश्य नियंत्रक के दृश्य को कैसे एक्सेस कर सकता हूं?

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

buttonManager=[[ButtonManager alloc] init]; 
[self addChildViewController:buttonManager]; 
[self.view addSubview:buttonManager.view]; 

और heres मेरी कोड इस दृश्य शुरू करने के लिए:

-(void)launchStopDialog: (NSString*)stopName { 
    NSLog(@"stopdialog should be launched."); 
    if (stopDialogController == nil) 
     stopDialogController = [[StopDialogController alloc] initWithNibName:@"StopDialog" bundle:nil]; 
    if (stopDialogController) 
     [stopDialogController presentWithSuperview:self.view.superview withStopName:stopName]; 
} 

उत्तर

38

माता पिता दृश्य नियंत्रक आप self.parentViewController उपयोग कर सकते हैं का उपयोग करने के। एक बार जब आप यह है कि आप अपने view संपत्ति आईओएस 5.x + अब

self parentViewController रिटर्न nil का उपयोग करने वालों के लिए

+4

स्विफ्ट 3.0 में 'self.parent' "हाँ! स्विफ्ट 3.0,% $ ^%! " (सी) खराब तोड़ना –

+0

@aqs: ViewDidLoad में self.parent * nil * क्यों है? – Kashif

+0

@ कशिफ, बस अगला जवाब देखें। –

23

नोट का उपयोग करके बस अपने दृश्य पहुँच सकते हैं। आपको एक ही परिणाम प्राप्त करने के लिए अब self presentingViewController का उपयोग करना होगा। http://omegadelta.net/2011/11/04/oh-my-god-they-killed-parentviewcontroller/

+1

लिंक टूटा हुआ है .. – user431791

+0

लिंक मेरे लिए नहीं टूटा हुआ है। –

3

है कि क्या मुझे

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    NSString * segueName = segue.identifier; 
    if ([segueName isEqualToString: @"child-view"]) { 
     ChildViewController * childViewController = (ChildViewController *) [segue destinationViewController]; 
     [self addChildViewController:childViewController]; 

    } 
} 
1

काम किया अब के बाद वे

self.parent 

आप उपयोग कर सकते मारे गए हैं: अपने कोड बेस के उन्नयन के लिए अधिक जानकारी और अतिरिक्त काम arounds के लिए इस ब्लॉग पोस्ट देखें

override func didMove(toParentViewController parent: UIViewController?) 
{   
}