代表没有被宣布?

时间:2015-06-20 21:47:05

标签: ios objective-c delegates

我有一个名为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?

1 个答案:

答案 0 :(得分:1)

将您的协议声明放在自己的Protocols.h文件中,例如:

//Protocols.h
@protocol mainScrollerDelegate <NSObject>

-(void)function;

@end

然后,只需将它导入发送委托方法的控制器和委托本身:

#import "Protocols.h"

@interface MyPillsView : UIViewController <mainScrollerDelegate>

此方法将保持所有协议的有序性,并有助于删除循环导入。

旁注:您应该使用协议的类命名约定(即MainScrollerDelegate)。