我无法使用委托方法。
我有2个观点。在视图A中,我使用委托说我按了一个按钮来查看B. 视图B很好地接收消息。 我想发送一条消息说B视图已收到消息。
因此,我的代表从A到B的视图有效但B到A的视图不起作用。
.h:
#import <UIKit/UIKit.h>
@protocol ButtonProtocolName <NSObject>
- (void)toucheEnter:(id)sender;
@end
@interface ClavierKsViewController : UIViewController
@property (nonatomic, assign) id <ButtonProtocolName> delegate;
@end
.m
#import "ClavierKsViewController.h"
@interface ClavierKsViewController ()
@end
@implementation ClavierKsViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(IBAction)toucheEntreeClavier:(id)sender{
[self.delegate toucheEnter:sender];
}
@end
现在查看B.h:
#import "ClavierKsViewController.h"
@interface CaisseViewController : UIViewController<ButtonProtocolName>
@property (nonatomic,retain) ClavierKsViewController *clavierKsView;
b.m
- (void)viewDidLoad
{
[super viewDidLoad];
clavierKsView = [self.storyboard instantiateViewControllerWithIdentifier:@"clavierKsView"];
clavierKsView.delegate=self;
}
-(void)toucheEnter:(id)sender{
NSLog(@"valider");
}
从这个意义上说它有效 当我从视图B创建委托以基于相同的方式查看A时,我仍然得到相同的消息:找不到委托的协议声明
答案 0 :(得分:0)
协议无法工作很可能是由循环依赖引起的。解决方案是将您的协议提取到另一个.h,例如&#34; ButtonProtocolName.h&#34;并在a.h和b.h中导入协议