Ios 如何从textfielddidediting访问自定义UITableViewCell?
我有一个自定义的Ios 如何从textfielddidediting访问自定义UITableViewCell?,ios,swift,uitableview,cocoa-touch,Ios,Swift,Uitableview,Cocoa Touch,我有一个自定义的UITableViewCell,其中我添加了一个UITextField,我想对textfield执行一些验证,并在单元格上设置一个hasrerror属性,以便可能向单元格添加错误标签并更改textfield的回色 我没有使用故事板并以编程方式创建自定义单元格/UITableViewCell 我正在使用我的UIViewController中的textfielddidediting检测文本更改,无法访问单元格,以设置我的hasrerror属性 我想我可以通过一个标记在视图/文本字段中
UITableViewCell
,其中我添加了一个UITextField
,我想对textfield执行一些验证,并在单元格上设置一个hasrerror
属性,以便可能向单元格添加错误标签并更改textfield的回色
我没有使用故事板并以编程方式创建自定义单元格/UITableViewCell
我正在使用我的UIViewController
中的textfielddidediting
检测文本更改,无法访问单元格,以设置我的hasrerror
属性
我想我可以通过一个标记在视图/文本字段中循环,以输入文本字段,然后获得它的父字段
或者我应该实现自己版本的textfielddidediting
,然后触发另一个事件,该事件将单元格和textfield作为参数
但我不确定这是否是最好的方法,也不确定如何触发事件。您可以使用
协议
一个简单的例子:
cellForRow
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = ....
cell.delegate = self
return cell
}
您的UITableViewCell
子类:
class Cell: UITableViewCell, UITextFieldDelegate {
// MARK: - Properties
weak var delegate: CellDelegate?
....
// MARK: - Functions
func textFieldDidEndEditing(_ textField: UITextField) {
self.delegate?.cell(self, textFieldDidEndDiting: textField)
}
}
您的协议
protocol CellDelegate: class {
func cell(_ cell: Cell, textFieldDidEndDiting textField: UITextField)
}
最后,使控制器符合该协议,如下所示:
class ViewController: UIViewController, CellDelegate {
func cell(_ cell: Cell, textFieldDidEndDiting textField: UITextField) {
}
}
如果要在自定义单元格中添加textField
,为什么不在自定义单元格中实现textfielddidediting
?在viewController中仍然没有调用