未声明委托?

Delegate was not declared?

我有一个名为 mainContainer 的视图控制器,他导入了另一个名为 myPills 的视图控制器,并将其添加为子视图。

mainContainer 也有一个 protocol 来发送代表到 myPills class,它看起来像:

//mainContainer.h
@protocol mainScrollerDelegate <NSObject>

-(void)function;

@end

@interface MainContainerView : UIViewController<UIScrollViewDelegate>

显然,在 myPills class 中我无法导入 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>

此方法将使您的所有协议井井有条,并有助于消除循环导入。

旁注:你真的应该为你的协议使用 class 命名约定(即 MainScrollerDelegate)。