我不明白为什么我无法设置委托(delegate)。我正在使用 UINavigationController 在两个 View 之间切换。这是我的代码
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
第二 View .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;
....
这里我得到了Assigning to id from incompromed type FirtView。
这里出了什么问题?
最佳答案
首先,委托(delegate)属性应声明为assign
,而不是retain
。你永远不应该保留委托(delegate)。
其次,FirstView
应符合 SecondViewProtocol
,如下所示。
@interface FirstView: UIViewController <SecondViewProtocol>
关于objective-c - 委托(delegate)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9452257/