Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从textfielddidediting访问自定义UITableViewCell?_Ios_Swift_Uitableview_Cocoa Touch - Fatal编程技术网

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中仍然没有调用