- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有自定义单元格,每个单元格中都有一个文本字段。当我更改其中的文本时,我想获取当前行,然后正确更新我的数组。到目前为止,我认为我根本无法运行 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 布局的屏幕截图:
我刚刚选择了自定义单元格,所以我开始学习。我以前使用过 .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/
我有自定义单元格,每个单元格中都有一个文本字段。当我更改其中的文本时,我想获取当前行,然后正确更新我的数组。到目前为止,我认为我根本无法运行 didFinishEditing 。我在那里放置了一个简单
NSOutlineViewDelegate 有 outlineView:shouldEditTableColumn:item: 在编辑单元格之前被调用。我需要在用户完成编辑单元格后调用类似的方法(以便
我是一名优秀的程序员,十分优秀!