我不明白为什么我不能设置委托。我正在使用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的信息。
这是怎么了?
最佳答案
首先,委托属性应声明为assign
,而不是retain
。您永远不要保留代表。
其次,FirstView
应该符合SecondViewProtocol
,如下所示。
@interface FirstView: UIViewController <SecondViewProtocol>
关于objective-c - 代表问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9452257/