2017-02-09 56 views
0

我有一個tableview在UIView裏面,這個tableview有三個按鈕,一個已經工作了,這是綠色的XI還有兩個按鈕來增加和減少價值在文本框的右側,這些是我需要幫助的。使用一個按鈕使用代表更改tableViewCell中的UITextField的值

enter image description here

在小區的按鈕調用細胞的上海華委託功能的@IBActions,與綠色的X按鈕已經工作,做它應該做的,但我需要做的現在是如何編程增加/減少產品數量(Cantidad)的按鈕的行爲,我的委託功能已經處理數據,但現在我需要它們來處理Cantidad TextField值,以便當用戶按下按鈕cantidadTextField.text被更新。

我只需要知道如何從託管TableVIew的類的單元格中訪問cantidadTextField.text屬性。

當cell被創建時,我可以在CellForRowAtIndexPath方法中做到這一點,但我需要在代理的方法內部做到這一點。

感謝您的幫助!

回答

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)" 
} 

如果這個形式給出不能做,你必須從控制器更新它,你可以參考保存到細胞,當你在控制器中的變量創建。但是要注意,由於細胞重複使用,例如,這個細胞在滾動時可能會被重複用於其他「producto」。

也許用一些代碼我們可以看到更好的問題!

+0

我之所以不想直接從小區更新的文本框是因爲我需要存儲到被加載到上海華一的plist變量,所以如果我需要將超級視圖的值傳遞給單元格,我會增加額外的複雜性。 我沒有在控制器中創建變量的原因正是由於單元重用。 我可以分享我的代碼,但查看它非常複雜,因爲UIView有三個自定義TableViews,並且它們中的每一個都有不同的行爲和不同的Nib,具體取決於行爲。 –

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 
     } 
    } 
} 
相關問題