如何让一个UIViewController具有多个接口

时间:2014-05-08 19:55:08

标签: objective-c uiviewcontroller interface protocols

我知道在Java中可以有一个不包含公共接口的类。相反,开发人员将任何公共属性和方法放在由另一个类实现的Interface类中。所以我的问题是:

是否可以使用具有暴露不同方法的接口类的UIViewController?在Objective C中,接口类是一个协议,不是吗?有没有办法强制协议成为UIViewController的接口?我的意思是这样的:

UIViewController contains methods:
    - (void)methodA 
    - (void)methodB 
    - (void)methodC 
    - (void)methodD 
    - (void)methodE

Protocol A contains methods:
    - (void)methodA 
    - (void)methodB 

Protocol B contains methods:
    - (void)methodC 
    - (void)methodD 
    - (void)methodE

Protocol C contains methods:
    - (void)methodA 
    - (void)methodB 
    - (void)methodE

我想使用相同的UIViewController,但我希望它根据使用它的应用程序公开不同的方法和属性。

1 个答案:

答案 0 :(得分:1)

是的,这正是协议/代理所使用的内容。在viewcontroller上实现协议,然后在将调用这些方法的类上设置datasource / delegates。例如:

@protocol delegateA <NSObject>
    - (void)methodA 
    - (void)methodB 
@end

@interface MyViewController : UIViewController <delegateA>
//Implement protocol methods here
@end

@interface MyClass : NSObject
@property (nonatomic, weak) id<delegateA> delegate;
@end

现在在MyClass类中,您可以在将视图控制器设置为新类委托并调用它之后调用viewcontroller上的方法

[self.delegate methodA]

但是你只能调用delegateA中声明的方法,而不是视图控制器类的整个接口。