gpt4 book ai didi

Swift RunLoop 阻止 TableView

转载 作者:行者123 更新时间:2023-11-30 11:42:11 26 4
gpt4 key购买 nike

所以,我有一个计时器,它每 0.1 秒将我的应用程序委托(delegate)中的变量加一。在我的 tableViewController 中,我将此数字显示在单元格中。在 Controller 中,有另一个计时器可以重新加载可见单元格。一切正常,除了一旦滚动 tableView 后,数字就会停止变化,直到 table view 没有释放为止。我读到解决这个问题的方法是:

RunLoop.current.add(tableTimer, forMode: RunLoopMode.commonModes)

其中tableTimer是我的单元格重新加载计时器。尽管如此,这是可行的,但一旦 ScrollView ,它就会非常滞后,并且像通常一样,流动性为 0%。有什么解决办法吗?谢谢。

编辑:

创建计时器:

func scheduledTimerWithTimeInterval(){
reloadTimer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(self.reloadTV), userInfo: nil, repeats: true)
RunLoop.current.add(earningTimer, forMode: RunLoopMode.commonModes)
}

更新表格 View :

@objc func reloadTV() {
self.tableView.beginUpdates()
self.tableView.reloadRows(at: self.tableView.indexPathsForVisibleRows!, with: .none)
self.tableView.endUpdates()
}

最佳答案

每 0.1 秒重新加载一个表格 View 以获取单元格中的标签是相当愚蠢的。出于多种原因。解决此问题的最佳方法是循环遍历所有可见索引路径,使用索引路径创建 cellForRowAtIndexPath,然后直接从那里修改单元格标题,方法如下:

@objc func reloadTV() {

for myIP in (tableView.indexPathsForVisibleRows) {
let cell = tableView.cellForRow(at: myIP)
cell.textLabel?.text = changingVariable
}

}

关于Swift RunLoop 阻止 TableView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49201454/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com