Простой метод делегата не работает - PullRequest
1 голос
/ 24 июня 2011

Была бы признательна за помощь.

У меня есть простой проект для тестирования:

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

Но в моей консоли ничего не печатается при нажатии кнопки.

Спасибо

1 Ответ

6 голосов
/ 24 июня 2011

Вы забыли установить свой делегат.Вы можете установить делегата в методе 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;, чтобы установить делегата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...