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)
}

``
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容