Swift delegate的一般写法

前一段时间把项目全部从OC改为了Swift,这里对一些常用的功能和细节做一点笔记。

delegate是项目里必然用到的功能,Swift语言相比OC更加简洁和清晰。

场景:
ViewController里面有一个子控件subView,subView包含子控件TableView。
现在希望在点击TableView的Cell时,把Cell对应的dataModel传给ViewController,ViewController拿到dataModel执行界面跳转。

在subView.swift文件中

@objc protocol DidSelectedDelegate {
    func getShowInfoModel(dataModel: marketDetailHeaderM)
}

weak var selecteDelegate: DidSelectedDelegate?

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        //取消选择效果
        tableView.deselectRow(at: indexPath, animated: false)
        
        //注,切换交易对信息后,需要重新发请求,重新清数据
        let model = models[indexPath.row]
        
        self.selecteDelegate?.getShowInfoModel(dataModel: model)
    }

在ViewController.swift中

//设置代理
class HomeController: UIViewController,DidSelectedDelegate {

func getShowInfoModel(dataModel: detailDataModel) {
    self.dataModel = dataModel
    }

override func viewDidLoad() {
      //添加subView视图
        var subView:subview = RankListView.init(frame: CGRect(x: 0, y: 0 , width: screenWidth, height: 370))
        subview.selecteDelegate = self  //设置代理
        scrollView.addSubview(subview)
}

``

你可能感兴趣的:(Swift delegate的一般写法)