gpt4 book ai didi

ios - 如何将 didFinishEditing (textField) 与自定义单元格一起使用?

转载 作者:行者123 更新时间:2023-11-30 12:39:26 24 4
gpt4 key购买 nike

我有自定义单元格,每个单元格中都有一个文本字段。当我更改其中的文本时,我想获取当前行,然后正确更新我的数组。到目前为止,我认为我根本无法运行 didFinishEditing 。我在那里放置了一个简单的打印命令,当我更改文本字段时,没有打印任何内容。我不确定应该将该函数放在单元格的类中还是主类中的位置。在主类中它不运行,并且在单元类中它不能给我索引path.row。

这是我尝试过的:

func textFieldDidEndEditing(_ itemTitle: UITextField) {
let pointInTable = itemTitle.convert(itemTitle.bounds.origin, to: self.tableView)

let textFieldIndexPath = self.tableView.indexPathForRow(at: pointInTable)


items.insert(itemTitle.text!, at: textFieldIndexPath)

//tableView.reloadData()(This isn't really that important)
}

还有这个:

func textFieldDidEndEditing(_ itemTitle: UITextField) {

items.insert(itemTitle.text!, at: indexPath.row)

//tableView.reloadData()(This isn't really that important)

}

这是我的细胞类别:

class ItemTableViewCell: UITableViewCell {

@IBOutlet weak var itemTitle: UITextField!
@IBOutlet weak var date: UILabel!


override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
itemTitle.resignFirstResponder()
}//(Not relevant)

}

在我的主课中,我有以下内容:

class PreviewToDoViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate {

以及我的 View 布局的屏幕截图:

Screenshot link

我刚刚选择了自定义单元格,所以我开始学习。我以前使用过 .default 和 .subtitle 单元格以及表格 View 。

感谢您的回答!

最佳答案

您没有打印出任何内容,因为 UITextFieldDelegate 必须位于您的 TableViewCell 中,然后您可以使用委托(delegate)将单元格和您在 textField 中使用的文本传递给 viewController,然后您可以访问您的 tableView然后你索引路径。

尝试这样的事情:

在这里,您创建委托(delegate)并将 textField 委托(delegate)放入您的 customCell

protocol ItemTableViewCellDelegate: NSObjectProtocol {
func textFieldDidEndEditing(text: String, cell: ItemTableViewCell)
}


class ItemTableViewCell: UITableViewCell, UITextFieldDelegate {

@IBOutlet weak var itemTitle: UITextField!
@IBOutlet weak var date: UILabel!

var delegate: ItemTableViewCellDelegate?

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
itemTitle.resignFirstResponder()
}

override func awakeFromNib() {
itemTitle.delegate = self
}

func textFieldDidEndEditing(_ textField: UITextField) {
if let text = textField.text {
delegate?.textFieldDidEndEditing(text: text, cell: self)
}
}
}

您的类是从您的自定义委托(delegate)扩展而来的。在委托(delegate)函数中,您可以使用indexPath(for: cell)访问indexPath

class PreviewToDoViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, ItemTableViewCellDelegate {

func textFieldDidEndEditing(text: String, cell: ItemTableViewCell) {
if let indexPath = tableView.indexPath(for: cell) {
items.insert(text, at: textFieldIndexPath)
}
}
}

关于ios - 如何将 didFinishEditing (textField) 与自定义单元格一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42417286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com