首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift RunLoop块表视图

Swift RunLoop块表视图
EN

Stack Overflow用户
提问于 2018-03-09 20:11:56
回答 1查看 225关注 0票数 0

因此,我有一个计时器,它每0.1秒在我的应用程序委托中增加一个变量。在我的tableViewController中,这个数字显示在一个单元格中。在控制器中还有另一个定时器,它重新加载可见的单元格。一切都正常工作,除了在tableView中滚动之后,直到表视图没有发布为止,这个数字就停止了更改。我读到过这样的解决办法是:

代码语言:javascript
复制
RunLoop.current.add(tableTimer, forMode: RunLoopMode.commonModes)

其中tableTimer是我的手机重新加载计时器。尽管如此,这是可行的,但一旦滚动通过视图,它是非常滞后的,是0%的流体,它是正常的。有什么解决办法吗?谢谢。

编辑:

创建计时器:

代码语言:javascript
复制
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)
}

更新表视图:

代码语言:javascript
复制
@objc func reloadTV() {
    self.tableView.beginUpdates()
    self.tableView.reloadRows(at: self.tableView.indexPathsForVisibleRows!, with: .none)
    self.tableView.endUpdates()
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-09 22:08:46

为单元格中的标签每隔几秒重新加载一个表视图是非常愚蠢的。有很多原因。解决此问题的最佳方法是遍历所有可见的索引路径,创建一个带有索引路径的cellForRowAtIndexPath,并通过以下方式直接修改单元格标题:

代码语言:javascript
复制
@objc func reloadTV() {

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

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49201454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档