2012-02-26 7 views
0

デリゲートを設定できない理由がわかりません。私は2つのビューを切り替えるには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

私はFirstView.hでSecondViewProtocol.hをインポートした
@synthesize delegate = _delegate; 
....... 

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

....... 

です

FirstView.m

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

ここでは、互換性のないタイプのFirtViewからIDに割り当てられます。

ここで何が間違っていますか?

答えて

1

まず、デリゲートプロパティはassignで、retainではなく、宣言する必要があります。代理人は決して保持しないでください。 次に、FirstViewは、次のようにSecondViewProtocolに準拠する必要があります。

@interface FirstView: UIViewController <SecondViewProtocol> 
関連する問題