如何在uicollectionviewcell中保存文本字段值

时间:2015-06-22 12:49:24

标签: swift uitextfield uicollectionviewcell

嗨我在uicollectionviewcell中有文字字段

  

所以我需要它的例子:

当我在第5行编辑文本字段值并完成它并转到第20行中的文本以编辑值时,collectionview已重新加载并忘记第5行中的值,

所以我需要暂时保存价值,而我手动更改

这是我的代码:

cell.foodNumber.tag = indexPath.row

        if let foodcodes = self.menu![indexPath.row]["code"] as? NSString {

            if contains(self.indexPathsForSelectedCells, indexPath) {
                cell.currentSelectionState = true

                cell.foodNumber.enabled = true
                cell.foodNumber.text = "1"

                println("foods:\(foodcodes) Count:\(cell.foodNumber.text)")
                println(cell.foodNumber.tag)


            } else {
                cell.foodNumber.enabled = false
                cell.foodNumber.text = nil
            }

        }

1 个答案:

答案 0 :(得分:0)

在ViewController中实现UITextFieldDelegate协议,特别是textField:didEndEditing方法。

将indexPath.row保存在textField.tag中,并将委托设置为控制器,您可以在其中保存值。

这是一个非常简单的例子:

class MyViewController : UITableViewController {

  var texts = [Int:String]()

  func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier( "Cell" ) as! UITableViewCell

    cell.textField.delegate = self
    cell.textField.tag = indexPath.row
    // restore saved text, if any
    if let previousText = texts[indexPath.row] {
      cell.textField.text = previousText
    }
    else {
      cell.textField.text = ""
    }
    // rest of cell initialization
    return cell
  }

}

extension MyViewController : UITextFieldDelegate {
  func textFieldDidEndEditing(textField: UITextField) {
    // save the text in the map using the stored row in the tag field
    texts[textField.tag] = textField.text
  }
}