我有一个名为mainContainer
的视图控制器,他导入一些名为myPills
的视图控制器,并将其添加为子视图。
mainContainer
还有一个protocol
来将代理人发送到myPills
课程,它看起来像:
//mainContainer.h
@protocol mainScrollerDelegate <NSObject>
-(void)function;
@end
@interface MainContainerView : UIViewController<UIScrollViewDelegate>
然而,显然在myPills
类我无法导入mainContainer
视图,但我确实想要注册mainContainer
代表。
所以在myPills
@interface MyPillsView : UIViewController <mainScrollerDelegate>
将在编译时出错。
我已经读过这篇文章了,并尝试将导入移动到代理人手中 - 没有成功。(代理未声明的相同错误)
Cannot find protocol declaration
如何从classA中侦听classB中的委托,其中classA正在导入classB,所以classB不能导入A?
答案 0 :(得分:1)
将您的协议声明放在自己的Protocols.h
文件中,例如:
//Protocols.h
@protocol mainScrollerDelegate <NSObject>
-(void)function;
@end
然后,只需将它导入发送委托方法的控制器和委托本身:
#import "Protocols.h"
@interface MyPillsView : UIViewController <mainScrollerDelegate>
此方法将保持所有协议的有序性,并有助于删除循环导入。
旁注:您应该使用协议的类命名约定(即MainScrollerDelegate
)。