Вам не нужно использовать ячейку tag
, так как вы используете закрытие для каждой ячейки для обработки обновления текстового поля;Это закрытие захватит indexPath
, чтобы вы знали, какую строку вы обновляете.Единственная проблема, которая может возникнуть, - это если вы разрешите переупорядочение ячеек либо путем перемещения ячеек, либо с помощью возможности вставки / удаления ячеек.В этом случае захваченный indexPath
станет недействительным (это та же проблема, что и при использовании tag
).Вы можете решить эту проблему, вызвав indexPath(for:)
в замыкании, чтобы получить индексный путь ячейки при выполнении замыкания.
Причина, по которой текст появляется при прокрутке, заключается в том, что объекты ячейки используются повторно иВы не устанавливаете текстовое поле явно.
Наконец, вы можете избежать всего танца weak self
, так как когда контроллер представления освобождается, представление таблицы будет освобождено, что означает, что ячейки будут освобождены.У вас нет цикла сохранения, хотя используется замыкание.
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let identifier = "Cell"
var cell: NH_QuestionListCell! = tableView.dequeueReusableCell(withIdentifier: identifier) as? NH_QuestionListCell
if cell == nil {
tableView.register(UINib(nibName: "NH_QuestionListCell", bundle: nil), forCellReuseIdentifier: identifier)
cell = tableView.dequeueReusableCell(withIdentifier: identifier) as? NH_QuestionListCell
}
cell.contentView.backgroundColor = UIColor.clear
cell.setText(options: self.questionViewModel.datafordisplay(atindex: indexPath))
cell.textadd = {
self.questionViewModel.setData(atIndex: indexPath,text: cell.textName)
}
return cell
}
Обратите внимание, вы не предоставили подробную информацию о том, как должен обновляться объект вашей модели, поэтому я вставил вызов функции, чтобы показатьidea.
Я бы также предложил вам ознакомиться с конвенциями Swift.Использование заглавных букв для имен параметров и использование NH_
в качестве префикса класса не является «Swifty»