我知道在Java中,有可能有一个不包含公共接口的类。相反,开发人员将所有公共属性和方法放置在由其他类实现的Interface类中。所以我的问题是:
有可能有一个具有公开不同方法的接口类的UIViewController吗?在目标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,但我希望它能够根据所使用的应用程序公开不同的方法和属性。
发布于 2014-05-08 12:03:12
是的,这正是使用协议/委托的目的。在viewcontroller上实现协议,然后在调用这些方法的类上设置数据源/委托。例如:
@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
类中,您可以在将视图控制器设置为新类委托并按如下方式调用它之后,调用视图控制器上的方法
[self.delegate methodA]
但是您只能调用在delegateA
中声明的方法,而不能调用视图控制器类的整个接口。
https://stackoverflow.com/questions/23551318
复制