Вы на правильном пути, создавая AddFieldDelegate
. Однако вместо реализации метода внутри класса ListCell
необходимо реализовать его в ViewController
.
Сначала измените строку определения класса контроллера представления на:
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource, AddFieldDelegate {
Это позволит вам вызывать метод делегата из контроллера представления. Затем, когда вы создаете ячейки табличного представления, добавьте строку:
cell.delegate = self
После этого переместите определение метода метода addField
в контроллер представления. Итак, в вашем контроллере представления добавьте:
func addField(titleOfTextFieldToAdd: String, numberAssociatedWithTextFieldToAdd: Int) {
data.append(listItems(title: titleOfTextFieldToAdd, isExp: false, mxF: numberAssociatedWithTextFieldToAdd))
self.tableView.reloadData()
}
Я использовал пример определения метода addField
, но вы можете изменить его на что угодно, просто убедитесь, что вы изменили массив данных и перезагрузите данные табличного представления.
Наконец, мы должны определить делегата в классе ListCell
. Поэтому добавьте эту строку в класс ListCell
:
weak var delegate: MyCustomCellDelegate?
Затем вы можете добавить текстовое поле, выполнив в любом месте вашего ListCell
класса следующую команду:
delegate?.addField(titleOfTextFieldToAdd: "a name", numberAssociatedWithTextFieldToAdd: 50)
Для получения дополнительной информации информацию о делегировании смотрите в ответе на этот вопрос.