UITableView флажок скрыть при прокрутке - PullRequest
0 голосов
/ 26 апреля 2018

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

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = UITableViewCell(style: .default, reuseIdentifier: "cell")
    cell.textLabel?.text = players[indexPath.row]
    cell.textLabel?.textColor = UIColor.white
    cell.backgroundColor = colorForIndex(index: indexPath.row)
    cell.textLabel?.font = UIFont(name: "Chalkboard SE", size: 20)

    return cell
}

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    self.tableView.deselectRow(at: indexPath, animated: true)
    if let cell = tableView.cellForRow(at: indexPath){
        if (cell.accessoryType == .none) {
            cell.accessoryType = .checkmark
            let player = players[indexPath.row]
            playersSelecteds.append(player)
        } else {
            cell.accessoryType = .none
            let player = players[indexPath.row]
            if let position = playersSelecteds.index(of: player) {
                playersSelecteds.remove(at: position)
            }
        }
    }
}

1 Ответ

0 голосов
/ 26 апреля 2018

У вас должна быть модель для помеченных клеток. потому что каждый раз, когда вы прокручиваете, ячейки перезагружаются на основе вашего tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell метода. Так, например, добавьте такую ​​модель:

var playersCheckmarked: [Bool] = []

Затем добавьте в viewDidLoad логическое значение для этого массива, если у массива игроков есть объекты. Далее в override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) методе установить playersCheckmarked[indexPath.row] = true или playersCheckmarked[indexPath.row] = false в зависимости от выбора пользователя. И, конечно, в методе override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell добавьте эту строку:

cell.accessoryType = playersCheckmarked[indexPath.row] == true .checkmark : .none
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...