I'm presenting a ViewController modally. How can I access the parent view controller ?
My architecture is TabBarController=>VC1=>VC2=>VC3=>MVC1, and I want to reach VC3 from MVC1.
In VC3, I have this code :
- (void) editAd{
    AskPasswordViewController *modalViewController = [[AskPasswordViewController alloc] initWithNibName:@"AskPasswordView" bundle:nil];
    NSLog(@"modalparent class=%@", [[modalViewController parentViewController] class]);
    [self presentModalViewController:modalViewController animated:YES];
    [modalViewController release];
}
I tried this in MVC1:
- (void) sendRequest {
    NSLog(@"classe : %@",[[self parentViewController] class] );
}
but it returns my TabBarViewController...
You can access parent by calling:
self.presentingViewController
As per apple documentation:
The view controller that presented this view controller (or its farthest ancestor.)
The way I'd go about something like this is to simply create a delegate.  In AskPasswordViewController's header, put
id delegate;
and
@property (nonatomic, assign) id delegate;
Synthesize it in the implementation file.  Then after you alloc/init the modal controller, and before you present it, set modalViewController.delegate = self;.  Then within the modal controller, you can call self.delegate to get information from the view controller that presented it.  I hope this helps
You can always go further back just by calling parentViewController like so:
self.parentViewController.parentViewController .... and so on until you reach the right one.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With