Необходимо реализовать метод делегата в viewDidLoad в tableView с пользовательскими ячейками - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь реализовать BEMCheckBox , и myCheckBox.delegate = self нужно найти в viewDidLoad.
Как мне сделать это в 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)
    }

}

1 Ответ

0 голосов
/ 21 сентября 2018

Вам необходимо установить делегата cell.delegate = self внутри cellForRowAt

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