现在我有一个自定义UITableViewCell
,其中包含UITextField
。单元格时UITextField
未启用用户交互。当您点击单元格时,textField将启用用户交互,然后成为第一响应者。 UITextFieldDelegate
在自定义UITableViewCell
类中实现。我的视图控制器有一个todos存储,我希望自定义UITableViewCell
知道它正在编辑哪个待办事项,然后更新模型并在调用委托方法时完成编辑时查看。我该如何实现呢?
答案 0 :(得分:3)
在UITableViewCell
的班级文件中,您可以声明如下协议:
protocol TextFieldUpdateDelegate {
func textFieldHasChanged(textField: UITextField)
}
然后给你UITableViewCell
类一个实例变量:
var textFieldUpdateDelegate: TextFieldUpdateDelegate?
当您处理UITextFieldDelegate方法时,您可能需要回调代理类似于:
if (textFieldUpdateDelegate != nil) {
textFieldUpdateDelegate!.textFieldHasChanged(textField)
}
您的表视图控制器需要执行以下操作:
// declare that it implements the protocol
class YourTableViewController: UITableViewController: TextFieldUpdateDelegate
// Actually implement the method
func textFieldHasChanged(textField: UITextField) {
// Do your magic
}
// Make sure to set the delegate on your table view cells
let cell = self.tableView.dequeueReusableCellWithIdentifier("YourCell") as! YourTableViewCell
cell.textFieldUpdateDelegate = self
希望这足以帮助您将所有部分连接起来。