gpt4 book ai didi

ios - UITableView - cellForRowAtIndexPath 延迟渲染

转载 作者:搜寻专家 更新时间:2023-10-31 08:15:56 24 4
gpt4 key购买 nike

我有一个 UITableView,它的单元格可能会有所不同,具体取决于要在每个单元格上显示的数据,所以我有两个可重复使用的单元格,UIPendingXOCellUIXOCell。在某些时候,每个 UIPendingXOCell 都会变成一个 UIXOCell

请参阅下面的代码了解一些上下文:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var xoItem = self.xoForIndexPath(indexPath)
var xoItemPFObject = xoItem.pfObject

// If it's a pending XO
if xoItemPFObject.objectId == nil {
var cellIdentifier = "cell-pending-xo-list"
var cell: UIPendingXOCell! = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as UIPendingXOCell!

...

return cell
}
else {
var cellIdentifier = "cell-xo-list"
var cell: UIXOCell! = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as UIXOCell!

...

return cell
}
}

示例:我有一个包含 5 个对象的列表,在调用 .reloadData() 时会生成 1 个 UIPendingXOCell 和 4 个 UIXOCell(都很好).我还有一个在后台运行的操作,它以一种方式更改对象,当我再次调用 .reloadData() 时,它们都变成了 UIXOCell(一切都很好,cellForRowAtIndexPath 被调用并落入 else block )。

我的问题是,在调用 cellForRowAtIndexPath 之后需要大约 10 秒才能将单元格呈现为 UIXOCell 而不是 UIPendingXOCell .

有没有人遇到过这个问题?如果是这样,我该如何解决?

谢谢!

最佳答案

听起来您没有从主线程(UI 线程)调用 reloadData。确保从主线程更新 UI。

dispatch_async(dispatch_get_main_queue()) { 
tableView.reloadData()
}

关于ios - UITableView - cellForRowAtIndexPath 延迟渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26346218/

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