Saturday, August 4, 2012

How To Create A Delegate


Often you need a class to call back a method of its owner. In this example MainClass is the class that needs to be called back and SubClass is the class that will need to call back a method in the MainClass.

//MySubClassName            Sub class name within the main class
//mySubClass1               Sub class object within the main class
//MethodNameToCallBack      Main class method to be called back
//SubClassDelegate          Delegate name
In MainClass.h

//Include the sub class header:
#import "MySubClassName.h"

//Add the delegate as an input to the class
@interface MainClassViewController : UIViewController
 
{
 MySubClassName *mySubClass1;

In MainClass.m

//When the create the sub class:
 mySubClass1 = [[MySubClassName alloc] init];
 [mySubClass1 setDelegate:self];

//The method that will be called back:
- (void)MethodNameToCallBack:(NSString *)s
{
 NSLog(s);
}

//********** DEALLOC **********
- (void)dealloc
{
 [mySubClass1 release];

In SubClass.h

#import 

//Define the protocol for the delegate
@protocol SubClassDelegate
- (void)MethodNameToCallBack:(NSString *)s;
@end

@interface MySubClassName : NSObject
{
 id <SubClassDelegate> delegate;

}
@property (nonatomic, assign) id   delegate;  

@end
In SubClass.m

@implementation MySubClassName
//Synthesize the delegate property:
@synthesize delegate;

//When you want to callback the MainClass method:
 [[self delegate] MethodNameToCallBack:@"Hello World"];

No comments:

Post a Comment