Вопросы делегатов - PullRequest
       2

Вопросы делегатов

0 голосов
/ 26 февраля 2012

Я не могу понять, почему я не могу назначить делегата. Я использую UINavigationController для переключения между двумя представлениями. Вот мой код

SecondViewProtocol.h

#import <Foundation/Foundation.h>

@protocol SecondViewProtocol <NSObject>
    @required
    -(void)textFieldDidChange:(NSString *)data;
@end

SecondView.h

#import <UIKit/UIKit.h>
#import "SecondViewProtocol.h"
@interface SecondView : UIViewController

@property (nonatomic, retain) id<SecondViewProtocol>delegate;
@end

SecondView.m

@synthesize delegate = _delegate;
.......

-(IBAction)textFieldReturn:(id)sender
{
    [[self delegate] textFieldDidChange:[self.textField text]];
}

.......

Я импортировал SecondViewProtocol.h в FirstView.h

FirstView.m

....
SecondView *secondView = [[SecondView alloc]init];
secondView.delegate = self;
....

Здесь я получаю присвоение идентификатору из несовместимого типа FirtView.

Что здесь не так?

1 Ответ

1 голос
/ 26 февраля 2012

Прежде всего, свойство делегата должно быть объявлено как assign, а не retain. Вы никогда не должны оставлять делегатов. Во-вторых, FirstView должно соответствовать SecondViewProtocol, как показано ниже.

@interface FirstView: UIViewController <SecondViewProtocol>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...