2012-02-26 4 views
0

Я не могу понять, почему я не могу установить делегат. Я использую 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; 
.... 

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

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

ответ

1

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

@interface FirstView: UIViewController <SecondViewProtocol> 
Смежные вопросы