2015-06-20 49 views
0

我有一些视图控制器叫mainContainer,他比导入一些其他视图控制器调用myPills,并将其添加为子视图。代表没有申报?

mainContainer也有一个派代表到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

你怎么能收听CLASSB委托来自classA,其中classA正在导入classB,因此classB不能导入A?

回答

1

把你的协议的声明在其自己的Protocols.h文件,例如:

//Protocols.h 
@protocol mainScrollerDelegate <NSObject> 

-(void)function; 

@end 

然后,只需将其导入到双方谁在发送委托方法控制器,并委托本身:

#import "Protocols.h" 

@interface MyPillsView : UIViewController <mainScrollerDelegate> 

此方法将保持您的所有协议组织,并可帮助删除循环导入。

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

+0

那么protocols.h应该如何?在Xcode中创建什么样的文件?你的侧音是什么意思?非常感谢! – Curnelious

+0

// Protocols.h后面的代码块实际上就是该文件中所需的全部代码。只需在Xcode中创建一个头文件。我的旁注有一个大写的'M'而不是小写的'm' - 它有助于区分变量和类。 – rebello95

+0

谢谢你。伟大的建议。 – Curnelious