swift5的代理的使用
swift5的代理的使用
swift5 的代理是ios重難點。
例如 UICollectionViewCell 想往 UICollectionViewController 傳值或者是通知一下一個值。怎么去做。
首先定義一個協議:
protocol PhotoBrowserViewCellDelegate: NSObjectProtocol{
func imageViewClick()
}
繼承NSObjectProtocol,
一。書寫一個方法,沒有方法體 functuon Body, 相當于java 的interface,接口,只聲明函數,不實現具體的方法。我這里沒有傳參,可以在小括號書寫傳遞的參數和參數類型的定義
二。在class 類里面定義一個成員變量,變量類型是PhotoBrowserViewCellDelegate,并設置為可選類型。
var delegate: PhotoBrowserViewCellDelegate?
三。在click函數里面 點擊事件里面書寫:
self.delegate?.imageViewClick()
直接通過成員變量調用協議里面的函數。我這里沒有傳參數,需要傳參的話,在協議里面根據自身情況傳遞相應的參數。
四。來到UICollectionViewController類里面,
首先遵守一下協議,
即cell.delegate = self,
再繼承一下 PhotoBrowserViewCellDelegate,重寫里面的方法.
extension PhotoBrowserController: PhotoBrowserViewCellDelegate{
func imageViewClick() {
closeVc()
}
}
大功告成。
再看一個帶參數案例的代理。
一 定義協議:
二 定義屬性delegate
var delegate: FontSizePickerDelegate! {didSet {self.buttonClick(button: self.btns[0])}}三 。 click函數里面調用方法
self.delegate.fontSizePicker(picker: self, didSelectSize: FontSize(rawValue: button.tag)!)來到xxxController里面,
遵守代理
picker.delegate = self
重寫代理方法:
總結
以上是生活随笔為你收集整理的swift5的代理的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: swift5自定义构造函数和自定义变量报
- 下一篇: 揭秘赚钱的技巧,学会让钱自己进来