美文网首页
swift 协议简单使用方法

swift 协议简单使用方法

作者: 善良的karl | 来源:发表于2019-11-21 15:33 被阅读0次

这里记录一下swift协议的最简单用法,使用方法如下:
一、在子控件里定义协议

//定义协议,协议名称最好是“你的类名”+Delegate
protocol WalletButtonCellDelegate {
    //协议方法,可以带参数
    func topUpClick()
}

二、在子控件里定义一个delegate属性

class WalletButtonCell: UITableViewCell {
    //定义一个delegate属性
    open var delegate: WalletButtonCellDelegate?

    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        //初始化子视图代码
        //.........
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}

三、在需要回调的地方实现一下协议方法

//MARK: - Action
extension WalletButtonCell {
    @objc private func topUpButtonClick() {
        //重要!这里要判断一下self.delegate是否为nil,防止外界未设置导致闪退
        if self.delegate != nil {
            self.delegate!.topUpClick()
        }
    }
}

四、在控制器里的cellForRowAt方法里设置cell.delegate = self

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        switch indexPath.section {
        case 0:
            let cell: WalletButtonCell = tableView.dequeueReusableCell(for: indexPath)
            cell.delegate = self
            return cell
        default:
            let cell: WalletAssetCell = tableView.dequeueReusableCell(for: indexPath)
            return cell
        }
    }

五、在控制器里监听协议WalletButtonCellDelegate的回调方法

//MARK: - Action
extension WalletViewController: WalletButtonCellDelegate {
    func topUpClick() {
        navigationController?.pushViewController(TopUpController(), animated: true)
    } 
}

相关文章

网友评论

      本文标题:swift 协议简单使用方法

      本文链接:https://www.haomeiwen.com/subject/iwltwctx.html