Ошибка UITableView?неправильные многоразовые ячейки - PullRequest
0 голосов
/ 18 февраля 2019

У меня UITableViewController по умолчанию с 10 строками, есть UITableViewCell с управлением сегментами

Если я изменю выбранный сегментController, вероятно, в ячейке: 2, то прокрутите вниз это состояние сегмента контроллера, который будет находиться в других ячейках

cell1 (selectedIndex: 1) ячейка2 (selectedIndex: 1)
ячейка3 (selectedIndex: 1) ячейка4 (selectedIndex: 1) ячейка5 (selectedIndex: 1)

... Выбрать в ячейке 2 другой индекс (2) прокрутите вниз, и ячейка 5 будет иметь такой же выбранный индекс, но я не касаюсь их

ячейка1 (selectedIndex: 1) ячейка2 (selectedIndex: 2)
ячейка3 (selectedIndex: 1) ячейка4 (selectedIndex: 1)) ячейки 5 (selectedIndex: 2)

выбрано 0 строка

строка 5 слишком выбрана, почему?

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10
    }

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)

        cell.selectionStyle = .none
        cell.textLabel?.text = String(indexPath.row)
        cell.textLabel?.textColor = .white

        return cell       
    }

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Сброс выбора в методе prepareForReuse UITableViewCell путем его подкласса.

переопределить функцию func prepareForReuse () {

}

0 голосов
/ 18 февраля 2019

UITableView и UICollectionView повторно используют ячейки.Это означает, что в памяти достаточно только ячеек, чтобы показать, что на экране.Когда вы прокручиваете ячейки за пределы экрана, они возвращаются, чтобы стать появляющимися ячейками.Вам необходимо правильно настроить ячейки, чтобы они снова появлялись в вашем override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)

Так что в вашем случае вам необходимо каждый раз устанавливать выбор сегментированного элемента управления в cellForRow.

Это означает, чтовам понадобится способ отслеживать, какой выбор был сделан на ваших сегментированных элементах управления, и вызывать его, чтобы правильно установить сегментированный элемент управления при повторном отображении ячейки.

...