Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Call a function in AppDelegate?

Following the solution (the highest-voted answer actually) at UITextField Example in Cocos2d, I managed to do it except the line

[[[UIApplication sharedApplication] delegate] specifyStartLevel];

I have placed it in my scene, I get this warning:

Instance method '-specifyStartLevel' not found (return type defaults to 'id')

Why is that? I clearly have -specifyStartLevel defined in the header and implementation of my AppDelegate...


Edit: Declaration of specifyStartLevel

#import <UIKit/UIKit.h>

@class RootViewController;

@interface AppDelegate : NSObject <UIApplicationDelegate,UITextFieldDelegate> {
    UIWindow            *window;
    UITextField *levelEntryTextField;
    RootViewController  *viewController;
}
- (void)specifyStartLevel;
@property (nonatomic, retain) UIWindow *window;

@end

And implementation:

- (void)specifyStartLevel
{
    [levelEntryTextField setText:@""];
    [window addSubview:levelEntryTextField];
    [levelEntryTextField becomeFirstResponder];    
}
like image 248
Voldemort Avatar asked Nov 22 '11 20:11

Voldemort


2 Answers

Right now, your class doesn't know anything about your delegate's methods. You need to import your delegate into your implementation, not your interface (to avoid cycled imports).

For example,

#import "AppDelegate.h"

Then you should cast the returned delegate in your nested method call to be your delegate type. For example:

[(AppDelegate *)[[UIApplication sharedApplication] delegate] specifyStartLevel];
like image 128
sudo rm -rf Avatar answered Oct 20 '22 00:10

sudo rm -rf


  1. Add your method in AppDelegate.h file such as:

    - (void)Welcome
    
  2. Implement the method in AppDelegate.m file such as:

     - (void)Welcome
     {
         NSLog(@"Welcome")
    
     }
    
  3. Set the UIApplication delegate in method such as:

    AppDelegate *appDelegate=[UIApplication sharedApplication] delegate];
    
    [appDelegate Welcome];
    
like image 40
Rajaram Avatar answered Oct 19 '22 23:10

Rajaram