Сохранить ячейки в UITableView в Swift? - PullRequest
0 голосов
/ 26 декабря 2018

UITableView по умолчанию повторно использовать ячейки.Но в моем случае некоторые ячейки имеют объект UITextField, и я не хочу терять его значение при повторном использовании ячейки.В таблице несколько строк, поэтому я могу обрабатывать все ячейки в памяти.

Пример кода, который я сейчас использую:

override func viewDidLoad() {
        super.viewDidLoad()
        tableView.register(UINib(nibName: "TPAddressInfoTableViewCell", bundle: nil), forCellReuseIdentifier: InfoCellIdentifier)
        ...

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let item = items[indexPath.row]
        switch item.appearance {
        case .textWithTitle:
            let cell = tableView.dequeueReusableCell(withIdentifier: InfoCellIdentifier) as! TPAddressInfoTableViewCell
            return cell
        case .picker:
            ...

Как правильно сохранить такие ячейки?Связывание UITextFieldDelegate каждой ячейки с текущим UIViewController в данном случае кажется лишним.

1 Ответ

0 голосов
/ 26 декабря 2018

Не сохранять ячейки .

Сохранить все значения элементов пользовательского интерфейса ячейки в модели данных и восстановить значения в cellForRow.

Например, передайте соответствующий элемент модели в ячейку в cellForRow и сохраните строку текстового поля в свойстве при его изменении.
В качестве альтернативы используйте закрытие обратного вызова для обновления свойства в контроллере.

...