我在UIView里面有一个tableView,这个tableview有三个按钮,一个已经工作了,绿色XI也有两个按钮来增加和减少文本域中的值到右边,这些是我需要的帮助。
单元格中按钮的@IBActions调用单元格的Superview中的委托函数,带有绿色X的按钮已经在工作,做了它应该做的事情,但我现在需要做的是如何编程增加/减少产品数量(Cantidad)的按钮的行为,我的委托功能已经在处理数据,但现在我需要它们来处理Cantidad TextField值,这样当用户按下按钮时,cantidadTextField .text已更新。
我只需要知道如何从托管TableVIew的类中访问单元格内的cantidadTextField.text属性。
我可以在创建单元格时在CellForRowAtIndexPath方法中执行此操作,但我需要在委托方法中执行此操作。
感谢您的帮助!
答案 0 :(得分:0)
为什么要尝试从tableviewcontroller更新textField?根据我的理解,您在问题中发布的图像将是一个合适的视图,不是吗? (除了" Productos"标题)
最好的方法是管理uitableviewcell中的所有这些行为。我的意思是更新控制器内每个@IBAction的uitextfield。如下所示:
@IBAction func plusPressed() {
let previousAmount = Int(cantidadTextField.text!)
cantidadTextField.text = "\(previousAmount + 1)"
}
@IBAction func minusPressed() {
let previousAmount = Int(cantidadTextField.text!)
guard let previousAmount > 1 else { return }
cantidadTextField.text = "\(previousAmount - 1)"
}
如果无法完成此方法并且必须从控制器更新它,则可以在控制器中的变量中创建对单元格的引用。但要注意,由于细胞重复使用,这个细胞可能会被重复用于另一个细胞产品"之后滚动时,例如。
也许使用一些代码我们可以更好地看到问题!
答案 1 :(得分:0)
<强>解决强>
我需要做的是直接从单元格访问文本字段,更新文本字段的值,然后调用委托,然后更新数据。
这是其中一种方法。
@IBAction func increaseAmount(_ sender: UIButton) {
let cantidadStr = cantidadProducto.text
if let cantidadInt = Int(cantidadStr!) {
var cantidad = cantidadInt
cantidad += 1
let strCantidad = String(cantidad)
cantidadProducto.text = strCantidad
}
self.delegate?.increaseProductQuantityTapped(sender: self, at: indexPath)
}
另一个
@IBAction func decreaseAmount(_ sender: UIButton) {
let cantidadStr = cantidadProducto.text
if let cantidadInt = Int(cantidadStr!) {
var cantidad = cantidadInt
if cantidad > 1 {
cantidad -= 1
let strCantidad = String(cantidad)
cantidadProducto.text = strCantidad
self.delegate?.decreaseProductQuantityTapped(sender: self, at: indexPath)
} else {
return
}
}
}