如何从textFieldDidEndEditing获得对自定义UITableViewCell的访问权限?

时间:2019-01-29 09:27:38

标签: ios swift uitableview cocoa-touch

我有一个自定义UITableViewCell,在其中添加了UITextField,我想在文本字段上执行一些验证,并在单元格上设置一个hasError属性以添加单元格上的错误标签,并更改文本字段的背景色。

我没有使用情节提要,并没有以编程方式创建我的自定义单元格/ UITableViewCell

我正在textFieldDidEndEditing中使用UIViewController来检测文本更改并且无权访问单元格,以设置我的hasError属性。

我想我可以通过一个标签在视图/文本字段中循环来设置文本字段的字段,然后获得它的父级。

或者我应该实现自己的textFieldDidEndEditing版本,然后触发另一个以单元格和文本字段为参数的事件。

但是我不确定这是最好的方法还是触发事件的方法。

1 个答案:

答案 0 :(得分:1)

您可以使用SELECT a.*, b.itemColour,b.itemColourName FROM itemorders AS a INNER JOIN CatalogueItemsColour AS b ON a.colourID = b.colourID WHERE a.orderID = 61 https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/Protocol.html

一个简单的例子:

cellForRow

Protocol

您的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)
}