我有一个UITableView,其中每个单元格都嵌入了UITextField。我要根据要编辑的UITextField更改一组值。目前,我正在使用以下功能:
func textFieldDidEndEditing(_ textField: UITextField) {
editedValue = textField.text!
}
但是我要做的是设置一个通用字符串,如果用户更改了UITextField中的文本,那么我可以为字符串编制索引并更改该特定值。有没有办法找到包含已编辑的UITextField的单元格的标记?
答案 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
}
}