2011-06-24 15 views
1

いくつかの助けがありがたいです。単純なデリゲートメソッドが機能しません

私はテスト目的のために、この単純なプロジェクトがあります。

http://dl.dropbox.com/u/10101053/testDelegate.zip

私は、デリゲートメソッドでNSStringのを渡したいと思いますが、このコードでは動作しませんが。

testDelegateViewController.h

@protocol testDelegateViewControllerDelegate; 


@interface testDelegateViewController : UIViewController { 


id<testDelegateViewControllerDelegate> delegate; 

IBOutlet UIButton *button; 

} 

@property (nonatomic, assign) id<testDelegateViewControllerDelegate> delegate; 
@property (nonatomic, retain) IBOutlet UIButton *button; 

- (void)pass; 

@end 

@protocol testDelegateViewControllerDelegate 

- (void)passSomeToDelegate:(NSString *)some; 

@end 

testDelegateVewController.m

#import "testDelegateViewController.h" 

@implementation testDelegateViewController 
@synthesize delegate, button; 


- (void)pass 
{ 
    NSLog(@"Button Pressed"); 
    [self.delegate passSomeToDelegate:@"some"]; 
} 

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 


    [button addTarget:self action:@selector(pass) forControlEvents:UIControlEventTouchUpInside]; 
} 

//rest of code 

AppDelegate.h

#import "testDelegateViewController.h" 

@interface AppDelegate : NSObject <UIApplicationDelegate, testDelegateViewControllerDelegate> { 

} 

AppDelegate.m

#import "AppDelegate.h" 

@implementation AppDelegate 


@synthesize window=_window; 

@synthesize viewController=_viewController; 

#pragma mark Delegate Method 

- (void)passSomeToDelegate:(NSString *)some 
{ 
    NSLog(@"%@", some); 
} 

//rest of code 

しかし、私のコンソールでは、ボタンをタップすると何も表示されません。

ありがとうございました

答えて

6

代理人を設定していません。代理人はapplication:didFinishLaunchingWithOptions:メソッドで設定できます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.viewController.delegate = self; 

    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

デリゲートを設定するためにself.viewController.delegate = self;を追加しました。

+0

ありがとうございました。 – lostinbcn

+0

これは私のような初心者に役立ちます。 – beginners

関連する問題