我有一个
之后,根据JSON数据的内容,通过编程方式生成单元格。例如,如果JSON表示一个单元格包含1个
随着您向下滚动,新的项目会从web加载,这是触发“加载更多”功能的方法。
然而,在向下滚动时,您会注意到小的冻结和卡顿,这看起来非常糟糕。我不知道为什么会出现这些小的冻结。
这是目前的情况。我在模拟器上录制了这段视频,但在实际设备上会更糟糕。
我不知道我应该在这里做什么。有什么建议吗?谢谢。
UITableView
作为我的应用程序的主视图。该UITableView
的内容通过JSON的HTTP请求从web加载,每次加载5个项目。这个请求部分没有性能问题。之后,根据JSON数据的内容,通过编程方式生成单元格。例如,如果JSON表示一个单元格包含1个
UILabel
、1个UITextField
和1个UIButton
,则将它们添加为正确的UITableViewCell
的子视图。单元格的初始状态也没有问题。随着您向下滚动,新的项目会从web加载,这是触发“加载更多”功能的方法。
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
let lastElement = data.jsonArray.count - 2
if indexPath.row == lastElement {
page += 1
getFeed()
}
}
然而,在向下滚动时,您会注意到小的冻结和卡顿,这看起来非常糟糕。我不知道为什么会出现这些小的冻结。
这是目前的情况。我在模拟器上录制了这段视频,但在实际设备上会更糟糕。
我不知道我应该在这里做什么。有什么建议吗?谢谢。
cellForAtIndexPath:
中发布代码吗? - ProtongetFeed
方法将被多次调用。如果该方法已经在执行中,则应防止再次调用。 - MD.cell forRowAtIndexPath:
中删除所有业务代码,然后重新检查性能。如果性能仍然不佳,则可能是因为圆角半径、渐变、自动布局等问题。否则,问题可能是由于你的业务代码占用了主线程太长时间。你可以逐行取消注释代码,直到找到问题所在! - Proton