ios - 需要在带有自定义单元格的tableView中的viewDidLoad中实现委托(delegate)方法

标签 ios swift uitableview delegates

我正在尝试实现 BEMCheckBox并且 myCheckBox.delegate = self 需要在 viewDidLoad 中设置。
我如何在 tableView 中执行此操作?

我已经对我的单元格和 tableView 执行了此操作:
tableView 的单元格文件:

import UIKit
import BEMCheckBox

protocol SizeSelectionDelegate: NSObjectProtocol {
    func didChooseSmall(cell: SizeSelectorCell)
    func didChooseLarge(cell: SizeSelectorCell)
}

    class SizeSelectorCell: UITableViewCell {



        @IBOutlet weak var smallSizeCheckBox: BEMCheckBox!
        @IBOutlet weak var largeSizeCheckBox: BEMCheckBox!
        @IBOutlet weak var smallSizePriceLabel: UILabel!
        @IBOutlet weak var largeSizePriceLabel: UILabel!

        weak var delegate: SizeSelectionDelegate?

          func didTap(_ checkBox: BEMCheckBox) {
            if checkBox.tag == 0 {
                delegate?.didChooseSmall(cell: self)
            }
            if checkBox.tag == 1 {
                delegate?.didChooseLarge(cell:self)
            }
        }

       }

TableViewController:

   func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if indexPath.row == 0 {
            let cell = tableView.dequeueReusableCell(withIdentifier: "InfoCell") as! InfoTableViewCell
                cell.nameLabel.text = name
                cell.detailLabel.text = detail
                cell.smallPriceLabel.text = String (smallPrice)
                cell.largePriceLabel.text = String (largePrice)

            return cell

        } else {
             let cell = tableView.dequeueReusableCell(withIdentifier: "SizeSelector") as! SizeSelectorCell
            cell.smallSizePriceLabel.text = String (smallPrice)
            cell.largeSizePriceLabel.text = String (largePrice)
            return cell
        }
  }

extension InfoTableViewController: SizeSelectionDelegate
{
    func didChooseSmall(cell: SizeSelectorCell) {
        size = "Small"
        print(size)
    }

    func didChooseLarge(cell: SizeSelectorCell) {
        size = "Large"
        print(size)
    }

}

最佳答案

您需要在 cellForRowAt 中设置委托(delegate) cell.delegate = self

let cell = tableView.dequeueReusableCell(withIdentifier: "SizeSelector") as! SizeSelectorCell 
cell.delegate = self
cell.smallSizePriceLabel.text = String (smallPrice)
cell.largeSizePriceLabel.text = String (largePrice)
return cell

关于ios - 需要在带有自定义单元格的tableView中的viewDidLoad中实现委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52445570/

相关文章:

swift - TvOS 焦点引擎跳过单元格

ios - 如何添加tableview xcode

ios - 'tableview:canEditRowAtIndexPath:' 实现中的返回类型冲突

javascript - 无法解码 iOS Objective C 中包含日文文本的 javascript 转义字符串

ios - 为什么 FBSDK 共享对话框不适用于图像附件?

ios - 在 iOS 5.0 OpenGL ES 2.0 纹理缓存上使用 mipmap 过滤

ios - 检查IOS中的日期是否正确

ios - 'mutableCopy()' Swift3 的使用不明确

ios - 2个UIScrollViews的直通触摸

ios - 如何将多个对象传递给延迟方法?