如何在表格视图中找到已编辑文本字段的索引

时间:2019-11-21 14:54:09

标签: ios swift xcode uitableview uitextfield

我有一个UITableView,其中每个单元格都嵌入了UITextField。我要根据要编辑的UITextField更改一组值。目前,我正在使用以下功能:

func textFieldDidEndEditing(_ textField: UITextField) {
            editedValue = textField.text!
        }

但是我要做的是设置一个通用字符串,如果用户更改了UITextField中的文本,那么我可以为字符串编制索引并更改该特定值。有没有办法找到包含已编辑的UITextField的单元格的标记?

3 个答案:

答案 0 :(得分:1)

在您的cellForRowAtIndexPath中,执行以下操作:

@objc func textChanged(textField: UITextField) { 
 let index = textField.tag 
 // this index is equal to the row of the textview
}

现在在您的视图控制器中声明此功能:

{
  "scripts": {
    "start": "nodemon my_file.js"
  },
  "devDependencies": {
    "nodemon": "<version>",
  }
}

答案 1 :(得分:0)

您可以获取textField的父单元格,然后找到IndexPath

func textFieldDidEndEditing(_ textField: UITextField) {
        if let cell = textField.superview as? UITableViewCell {
            let indexpath = tableview.indexPath(for: cell)
            // indexpath.row -  row index, indexpath.section - section index
        } 
    }

答案 2 :(得分:0)

首先在UITableViewCell中定义一个协议/代理


protocol CustomCellDelegate: class {
    func getTextFeildData(cell: CustomCell, text: String)
}

class CustomCell: UITableViewCell {

    weak var delegate: CustomCellDelegate!

    func textFieldDidEndEditing(_ textField: UITextField) {
        delegate.getTextFeildData(cell: self, text: textField.text ?? "")
    }
}

在您的cellForRowAtIndexPath函数中设置单元格的委托:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell
    cell.delegate = self

    return cell
}

然后确认ViewController的委托方法:

extension ViewController: CustomCellDelegate {

    func getTextFeildData(cell: CustomCell, text: String) {

        guard let tappedIndexPath = self.tableView.indexPathForCell(cell) else {return}

        print("Tapped IndexPath: \(tappedIndexPath)")
        print("Text Field data: \(text)")

        // update your model here
    }
}