collectionView не отображают правильное содержимое [dубликат]

У меня длинный список текстовых полей, поэтому я использую tableView.

Так выглядит экран

Когда я вставляю какой-либо текст в текстовое поле в одном из ячейки и прокрутка вниз по некоторым другим ячейкам получают одно и то же значение текстового поля. Я не знаю, почему это произойдет.

Теперь это мой код:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath) as! RelatieToevoegenCell
    cell.label.text = items[indexPath.row]
    cell.textfield.placeholder = items[indexPath.row]
    return cell
}
0
задан pacification 20 April 2018 в 12:16
поделиться

2 ответа

Основная проблема заключается в том, что вы сохраняете свои данные внутри Views (UITableVieCell).

Ячейки повторно используются UITableView для оптимизации производительности - поэтому, даже если в вашей таблице есть 1 миллион строк, всего несколько UITableViewCells в памяти (как многие из них видны на экране обычно).

Когда вы вызываете dequeueReusableCell, он принимает одну из уже существующих ячеек и повторно ее использует.

Чтобы решить эту проблему, вам нужно хранить свои данные отдельно в массиве и сохранять измененные тексты там. Затем вам нужно изменить код, который вы отправили, и каждый раз, когда вы настраиваете UITableView с вашего «dataSource», каждый раз, когда вы настраиваете данные.

Также хорошей ошибкой является сброс UITableViewCell при повторном использовании, вы можете сделать это, добавив кодирование В этом случае вы можете прочитать это, прежде чем начать кодирование - это позволит понять, как UITableView работает в iOS: [

! d6]

prepareForReuse

2
ответ дан Grzegorz Krukowski 15 August 2018 в 12:53
поделиться

В принципе, вам нужно получить и сохранить значения в view-controller, потому что из-за многоразового поведения UITableViewCell вы потеряли ссылку на невидимую ячейку со всей дочерней ссылкой.

Итак, вы может хранить значение текстового поля посредством действия textViewDidChange в классе RelatieToevoegenCell.

0
ответ дан Salman Ghumsani 15 August 2018 в 12:53
поделиться

Другие вопросы по тегам:

Похожие вопросы: