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