如何从自定义单元类更改数据源

时间:2018-02-16 11:17:27

标签: ios swift uitableview oop

这应该是直截了当的,但我很难理解。 我有一个班级

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!
}

1 个答案:

答案 0 :(得分:0)

您应该使用自定义委托方法向视图控制器通知文本字段中的更改。在自定义委托方法中,您应该更新fields数组。在调用自定义委托方法之前,您应该更改单元格中的field

您应该在textFieldDidChangeText

中调用此委托方法