我已实施选项"滑动以删除"在我的TableView中像这样:
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
func tableView(_ tableView: UITableView, commit editingStyle:
UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
rows.remove(at: indexPath.row)
runnerTableView.deleteRows(at: [indexPath], with: .fade)
runnerTableView.reloadData()
}
}
在我的Timer实现之前它工作正常:
timer = Timer.scheduledTimer(timeInterval: 0.01, target: self,
selector:#selector(ViewController.updateTimer), userInfo: nil, repeats: true)
RunLoop.main.add(timer, forMode: RunLoopMode.commonModes)
func updateTimer () {
var j = 0
for _ in rows {
if (rows[j]["Playing"] as! Bool == true ) {
rows[j]["time"] = (rows[j]["time"] as! Double + 0.01) as AnyObject
}
j += 1
}
runnerTableView.reloadData()
}
编辑:
现在,要删除的滑动不起作用。我刷卡时没有任何附加物。
我怎样才能再次运作?
答案 0 :(得分:1)
<强>更新强>
reloadData
updateTimer
rows[j]["time"]
。<强>来源强>
如果您想显示计时器,可以使用:
func updateTimer() {
var j = 0
for _ in rows {
if (rows[j]["Playing"] as! Bool == true ) {
rows[j]["time"] = (rows[j]["time"] as! Double + 0.01) as AnyObject
}
j += 1
}
for cell in tableView.visibleCells {
if let indexPath = tableView.indexPath(for: cell) {
cell.timeLabel.text = "\(rows[indexPath.row]["time"])"
}
}
}
答案 1 :(得分:0)
我只是在添加以下内容时才会看到您的问题:RunLoop.main.add(timer, forMode: RunLoopMode.commonModes)
。这可能是因为它在主线程中运行,因此阻塞了tableView UI。我在viewDidLoad
添加了计时器。
尝试将此行替换为:
RunLoop.current.add(self.timer, forMode: RunLoopMode.commonModes)
并移除reloadData()
函数中的updateTimer
。