美文网首页
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