как передать значения из ViewController в пользовательский класс ячеек UITableView - PullRequest
0 голосов
/ 11 мая 2018

у меня есть имя VC RestaurantViewController у него есть настраиваемая ячейка для itemName ItemPrice, и есть три кнопки +, - и добавить их действия теперь в customCellClass, когда пользователь выбирает количество, задавая плюс / минус, а затем нажимает кнопкуКнопка добавления: все данные должны идти в CartVC, но не нажимать, пока пользователь не выберет значок корзины в главном меню.

RestaurantVC выглядит следующим образом enter image description here

В настоящее время я использую blockClosure для передачи данных

 //assign item name to cell
    let selectedDictName = restMenu[indexPath.row] as! NSDictionary
    print("the selected dict ", selectedDictName)
    cell.itemNameLabel.text = selectedDictName.value(forKey: "ItemName") as! String

    // assign item price to cell
    let selectedDictPrice = restMenu[indexPath.row] as! NSDictionary
    cell.itemPriceLabel.text = "Price: \(selectedDictPrice.value(forKey: "ItemPrice") as! String)"

    // pass ItemName and ItemPrice by blockClosure
    if blockClosure != nil{
        blockClosure(selectedDictName.value(forKey: "ItemName") as! String, selectedDictPrice.value(forKey: "ItemPrice") as! String )
    }

, но перед передачей всех значений, соответствующих выбранному ресторану, перед загрузкой ячейки

как я могу передать данные, а затем продолжитьприкрепить количество товара с ним?это будет очень полезно для моего последнего семестра проекта

1 Ответ

0 голосов
/ 11 мая 2018

Ниже приведен код: - Использование протокола Delegate

//1
//Create protocol

protocol TableViewCellDelegate {
    func addTapped(cell: TableViewCell)
}

//2
//Create instance
class TableViewCell: UITableViewCell {

var delegate: TableViewCellDelegate?

….

@IBAction func addAction(_ sender: Any) {
    delegate?.addTapped(cell: self)
}
}


//3

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    // create a new cell if needed or reuse an old one
    let cell: TableViewCell = tableView.dequeueReusableCell(withIdentifier: “cell”, for: indexPath) as! TableViewCell
    cell.delegate = self
}

 //4
extension ViewController: TableViewCellDelegate {
func addTapped(cell: TableViewCell) {

 }
}
...