Ячейки табличного представления мерцают при перезагрузке ячеек табличного представления - PullRequest
2 голосов
/ 19 сентября 2019

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

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

Но в сценарии BLE, если прокрутка и удержание также осуществляют непрерывные обратные вызовы BLE.

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

reloadTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(reloadTableViewCells), userInfo: nil, repeats: true)

@objc func reloadTableViewCells(_ name: String) {
    if let index = myArray.firstIndex(where: {name == $0}) {
          self.myArray[index] = name
          self.tableViewRx.reloadRows(at: [IndexPath(row: index, section: 0)], with: .none)
    } else {
         myArray.append(name)
         self.reloadTableView()
    }
}
func scanForBLEDevices() {
    scanBleDevices(allowDuplicates: true, peripheralUUIDString: nil, callback: reloadTableViewCellsOnBleScan)
reloadTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(reloadTableViewCells), userInfo: nil, repeats: true)
}

@objc func reloadTableViewCellsOnBleScan(_ name: String) {
    if let index = myArray.firstIndex(where: {name == $0}) {
          self.myArray[index] = name
          self.tableViewRx.reloadRows(at: [IndexPath(row: index, section: 0)], with: .none)
    } else {
         myArray.append(name)
         self.reloadTableView()
    }
}

ожидаемые результаты: ячейки табличного представления должны перестать мерцать при прокрутке и удерживании табличного представления.

...