J'ai un tableView avec une cellule personnalisée, chaque fois que je clique sur le bouton de la case à cocher, la valeur à l'intérieur de la cellule augmente, c'est-à-dire, (0 à 1) dans la cellule, et lors du décochage, la valeur diminue, cela fonctionne parfaitement. Mais lorsque j'essaie d'imprimer ces valeurs de la cellule vers un UILabel en dehors du tableView, les valeurs ne changent pas.
Voici le code ci-dessous que j'ai utilisé
var data = [[String: AnyObject]]()
func getDetails() {
let paymentURL = paymentListURL + String(28) + "&student_id=" + String(33)
Alamofire.request(paymentURL).responseJSON { (response) in
if ((response.result.value) != nil) {
var jsonVar = JSON(response.result.value!)
print(jsonVar)
if let da = jsonVar["types"].arrayObject {
self.data = da as! [[String:AnyObject]]
}
if self.data.count > 0 {
self.tableView.reloadData()
}
}
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TabCell
cell.checkB.tag = indexPath.row
let ip = data[indexPath.row]
cell.nameText.text = ip["title"] as? String
if cell.nameText.text == "Mandatory testing" {
cell.checkB.checkState = .checked
cell.backgroundColor = UIColor.lightGray
cell.checkB.backgroundColor = UIColor.lightGray
}
if ip["mandatory"] as? String == "yes" {
moneyText.text = ip["amount"] as? String
//moneyText is UILabel outside Tableview
cell.amountValue.text = ip["amount"] as? String
cell.checkB.isEnabled = false
} else {
moneyText.text = "0"
if cell.amountValue.text == "1"{
print("ONE")
}
}
return cell
}
func didPressButton(_ tag: Int) {
let indexPath = IndexPath.init(row: 0, section: 0)
let cell = tableView.cellForRow(at: indexPath) as! TabCell
moneyText.text = String(cell.someValue)
}
Et pour TableviewCell, j'ai utilisé
protocol TabCellDelegate {
func didPressButton(_ tag: Int)
}
class TabCell: UITableViewCell {
@IBOutlet weak var checkB: M13Checkbox!
@IBOutlet weak var nameText: UILabel!
@IBOutlet weak var amountValue: UILabel!
var someValue: Int = 0 {
didSet {
amountValue.text = "\(someValue)"
}
}
@IBAction func checkBAction(_ sender: M13Checkbox) {
cellDelegate?.didPressButton(sender.tag)
if checkB.checkState == .checked {
someValue += 1
} else if checkB.checkState == .unchecked {
someValue -= 1
}
}
}
J'ai essayé d'abord d'ajouter ces valeurs de la cellule à un tableau, puis d'ajouter toutes les valeurs dans le tableau et d'imprimer dans UILabel, mais les valeurs ne changent pas, elles sont seulement incrémentées, c'est-à-dire que même après avoir décoché la case à cocher, la valeur augmente.
J'ai essayé, même en utilisant le protocole, mais ça n'a pas marché pour moi.
Toute aide sera appréciée.