swift协议代理的使用跟oc的协议代理差不套多,不过语法上还是有不小的区别。swift使用协议的关键字:protocol,协议的语法:protocol Pro1{//这里定义属性或者方法},
swift创建协议并声明代理属性:
protocol ViewControllerSDelegate {
funcViewControllerDelegateLoadDataOne(); // 不带参的
funcViewControllerDelegateLoadDataTwo(str:String); // 带参的
}
func doClick() { // 点击触发的方法
self.delegate?.funcViewControllerDelegateLoadDataOne()//让代理去执行代理方法
}
控制器方法实现
class ViewController:UIViewController,ViewControllerDelegate {
var delegate:ViewControllerDelegate?;
override func viewDidLoad() {
super.viewDidLoad()
self.delegate=self;
}
internal func ViewControllerDelegateLoadDataOne() {
}
func ViewControllerDelegateLoadDataTwo(str:String) {
}
}
oc拟定协议:
@protocol ViewControllerDelegate <NSObject>
@required//缺省属性,必须要实现
- (void)show;//show是必须要实现
@optional//可选实现
- (void)show1;//show1是可实现也可不实现
@end
- (void) onClick {
if([self.delegate respondsToSelector:@selector(show)]) {
[self.delegate show];
}
}
遵守协议
@interface ViewController()<ViewControllerDelegate>
@end
设置代理实现方法
- (void)viewDidLoad {
[superviewDidLoad];
self.delegate = self; // 设置代理
}
-(void) show {
}
-(void) show1{
}
网友评论