表视图单元在重新加载单个单元时闪烁。我想在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()
}
}
预期结果是,滚动并按住表格视图时,表格视图单元格应停止闪烁。