Problem in calling a function from different class using protocols-iphone
Posted
by Muniraj
on Stack Overflow
See other posts from Stack Overflow
or by Muniraj
Published on 2010-03-19T11:36:33Z
Indexed on
2010/03/19
11:41 UTC
Read the original article
Hit count: 188
iphone
I use cocos2d for my game. In which I play a movie and have a separate overlay view for controls.The touches are detected in the overlay view. Now when the touches are detected the function in the game code has to be invoked. But the function is not detected and there is no error. I dont know what has gone wrong. Someone please help me. The code are as follows
The protocol part is
@protocol Protocol
@required
-(void) transition1:(id) sender;
@end
The function which is to be invoked in the game code is
- (void) transition1:(id) sender
{
[[Director sharedDirector] replaceScene: [ [Scene node] addChild: [Layer4 node] z:0] ];
}
The code in the overlay view in MovieOverlayViewController.h
import "Protocol.h"
@interface MovieOverlayViewController : UIViewController
{ UIImageView *overlay;
NSObject <Protocol> *transfer;
}
@end
The code in the overlay view in MovieOverlayViewController.m
@implementation MovieOverlayViewController
- (id)init
{
if ((self = [super init]))
self.view = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
return self;
}
-(void) viewWillAppear:(BOOL)animated {
overlay = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"overlay.png"]] autorelease];
[self.view addSubview:overlay];
}
(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self.view];
NSLog(@"pointx: %f pointy:%f", point.x, point.y);
if (CGRectContainsPoint(CGRectMake(1, 440, 106, 40), point)) {
// the function is called here [transfer transition1: nil];
} else if (CGRectContainsPoint(CGRectMake(107, 440, 106, 40), point)) NSLog(@"tab 2 touched");
}
(void)dealloc { [overlay release];
[super dealloc]; }
@end
© Stack Overflow or respective owner