Ios 如何为正在编辑的内容提供自定义UITableViewCell上下文?

Ios 如何为正在编辑的内容提供自定义UITableViewCell上下文?,ios,swift,Ios,Swift,所以现在我有一个自定义的UITableViewCell,它包含一个UITextField。当单元格处于活动状态时,UITextField未启用用户交互。点击单元格时,文本字段将启用用户交互,然后成为第一响应者。UITextFieldDelegate在自定义的UITableViewCell类中实现。我的视图控制器有一个todo存储区,我希望自定义UITableViewCell知道它正在编辑哪个todo,然后在完成编辑时更新模型和视图,并调用委托方法。如何实现这一点?在您的UITableViewCe

所以现在我有一个自定义的
UITableViewCell
,它包含一个
UITextField
。当单元格处于活动状态时,
UITextField
未启用用户交互。点击单元格时,文本字段将启用用户交互,然后成为第一响应者。
UITextFieldDelegate
在自定义的
UITableViewCell
类中实现。我的视图控制器有一个todo存储区,我希望自定义
UITableViewCell
知道它正在编辑哪个todo,然后在完成编辑时更新模型和视图,并调用委托方法。如何实现这一点?

在您的
UITableViewCell
类文件中,您可以声明如下协议:

protocol TextFieldUpdateDelegate {
    func textFieldHasChanged(textField: UITextField)
}
然后给您
UITableViewCell
class一个实例变量:

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

希望这足以帮助您将各个部分连接起来。

您可以让customcell成为textField的代理,而不是viewcontroller@WilsonXJ是的,我就是这么做的。但是,我如何在自定义单元格中保留上下文,并让视图控制器知道其已完成编辑?是的,您可以使用回调或delegates最简单的方法是传递整个数组和当前选定对象的索引,并在那里访问它,但我不认为这是一个好主意。如果在控制器上设置委托并进行编辑,怎么样它将使您不必使用分散的代码,也不必使用数组的多个副本,而且您甚至不需要自定义协议。是的,谢谢您的回答!其实我是从这里想出来的:在你回答之前,但我真的很感激。你会接受这个吗