2012-02-26 63 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]]; 
} 

....... 

我在FirstView.h進口SecondViewProtocol.h

FirstView.m

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

這裏我從不兼容的類型FirtView分配到的ID。

這裏有什麼問題?

回答

1

首先,代表財產應宣佈爲assign,而不是retain。你永遠不應該留下代表。 二,FirstView應符合SecondViewProtocol如下。

@interface FirstView: UIViewController <SecondViewProtocol>