views:

68

answers:

1

my protocol:

@protocol ElectricalSystemEngineDelegate
-(void)didRequestMainMenu:(id)sender;
@end

I designed this protocol in order to handle dismissal of a modal View Controller inside my rootView controller. My rootView controller adopts this protocol and is declared as follows:

#import "ElectricalSystemEngineDelegate.h"

@interface RootViewController: UIViewController <ElectricalSystemEngineDelegate>
//other ivars & methods including instantiation of my modalViewController.

I use an out-of-the-box:

-(IBAction)displayElectricalViewController

-to display the modal controller... which works fine. I am, however, confused on how to proceed further with the implementation of this protocol to handle dismissal of the controller..

//The implementation of my root view controller.
-(void)didRequestMainMenu:(id)sender {
    [self dismissModalViewControllerAnimated: YES];
}

Obviously, I correctly implemented the protocol by using the prescribed method. I want the method to dismiss my view controller when called. I also want it to be called by the tapping of a back button in the modalViewController.

As the apple docs say, "In some cases, an object might be willing to notify other objects of its actions so that they can take whatever collateral measures might be required." My goal is for my ElecticalViewController to notify its parent (the RootViewController) that it should be dismissed. That dismissal should be triggered by tapping the back button. How does the object accomplish this notification?

+2  A: 

You need to add id <ElectricalSystemEngineDelegate> delegate property to your ElectricalViewController.

Then you need to assign self (RootViewController) to that delegate after you created ElectricalViewController.

Then you call [delegate didRequestMainMenu] when you dispose ElectricalViewController.

Then you need to create a method didRequestMainMenu to your RootViewController.

sha
worked like a dream. That was the only piece of the puzzle that I was missing. Thanks!!
samfu_1