这应该是直截了当的,但我很难理解。 我有一个班级
class Field:NSObject {
var name:String?
var answer:String?
.................
}
现在我还有一个viewcontroller,其中有一个tableview。我使用 Field 数组作为此tableview的数据源。我正在将 Field 数组中的relavent对象传递给具有UItextfield的自定义单元类(见下文)。
cell.field = self.fields[indexPath.row]
我想要的是当UItextfield中的文本被更改时,这应该更新我们的主 Field 数组。自定义单元类也应该具有Field实例的新副本。我希望我已经说清楚了,请问你是否了解任何事情。很有责任。
这是单元类代码
class SpeechCell: UITableViewCell, UITextFieldDelegate {
public var field:Field?{
didSet{
self.lblField.text = self.field?.name
self.txtAnswer.placeholder = self.field?.name
}
}
func textFieldDidEndEditing(_ textField: UITextField, reason: UITextFieldDidEndEditingReason) {
self.field?.answer = textField.text!
self.commandDelegate?.didUpdateField(field: self.field!, textField: textField)
}
override func prepareForReuse() {
self.txtAnswer.text = self.field?.answer
}
这是tableview的代码
func didUpdateField(field: Field, textField: UITextField) {
self.fields[textField.tag].answer = textField.text!
}
答案 0 :(得分:0)
您应该使用自定义委托方法向视图控制器通知文本字段中的更改。在自定义委托方法中,您应该更新fields
数组。在调用自定义委托方法之前,您应该更改单元格中的field
。
您应该在textFieldDidChangeText
。