我有一个名为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?
最佳答案
将协议声明放入其自己的Protocols.h
文件中,例如:
//Protocols.h
@protocol mainScrollerDelegate <NSObject>
-(void)function;
@end
然后,将其导入发送委托方法的控制器和委托本身:
#import "Protocols.h"
@interface MyPillsView : UIViewController <mainScrollerDelegate>
此方法将使您的所有协议保持井井有条,并可以帮助删除循环导入。
旁注:您应该为协议使用类命名约定(即
MainScrollerDelegate
)。