swift中的代理声明和OC中差不多。
使用关键字protocol 定义代理的名称在大括号里面写上代理要实现的方法,func 方法名(参数: 参数类型)->返回值类型
protocol CustomLayOutDelegate{
func CollectionCellSize(collectionView :UICollectionView,layout : CustomLayOut ,indexPath :NSIndexPath) ->CGSize
}
class CustomLayOut: UICollectionViewFlowLayout {
声明属性
var delegate : CustomLayOutDelegate?
}在代理对象里调用
接收代理
class ViewController: UIViewController,CustomLayoutDelegate,UICollectionViewDelegate,UICollectionViewDataSource{
var collectionView :UICollectionView?
overridefunc viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor =UIColor.whiteColor();
let layOut :CustomLayout = CustomLayout.init(numberOfColumns:2);
设置代理对象
layOut.delegate =self;
实现代理方法
func collectionView(collectionView:UICollectionView!, layout: CustomLayout!, sizeForItemAtIndexPath indexPath:NSIndexPath!) -> CGSize {
returnCGSizeMake(width, height);
}
}