gpt4 book ai didi

ios - 滚动多个单元格类型时 UITableView 滞后

转载 作者:搜寻专家 更新时间:2023-11-01 07:05:28 27 4
gpt4 key购买 nike

我知道关于这个主题有很多问题,但请耐心等待,因为我没有找到解决我的具体问题的方法。

首先,我的整个应用程序都在代码中(没有 Storyboard)。我正在创建一个具有多种单元格类型的 tableView(我从后端获取数据的地方)。单元格的顺序不变,这意味着第一个单元格将始终与任何其他第一个单元格的类型相同(不确定你是否明白我的意思,但从技术上讲,单元格类型对于特定的 indexPath 是不变的。

所以问题是我有一些方法可以使每个 indexPath 的特定单元格出队。在我的一个单元格中,我有一个 MapboxStatic map ,它从 Mapbox 的服务器返回一张 map 图像。假设单元格在初始运行时不在屏幕上,如果我滚动得足够快,tableView 将暂停一秒钟左右以加载返回的图像(我尝试在主队列上异步加载它仍然没有任何变化)。

现在我的另一个问题是 UberRides 按钮,它在滚动时也会滞后(同样的问题)。

值得一提的是,如果我在 tableView 中滚动一次(有滞后),然后上下滚动它就不再滞后了,但我猜这是因为出列的单元格仍在内存中。

如果您需要任何其他详细信息,请发表评论。

[编辑]代码:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.section == 1 {
return reserveTableViewCell(at: indexPath)
} else if indexPath.section == 2 {
return dateTimeTableViewCell(at: indexPath)
} else if indexPath.section == 3 {
return descriptionTableViewCell(at: indexPath)
} else if indexPath.section == 4 {
if indexPath.row == 0 {
return mapTableViewCell(at: indexPath)
} else {
return uberTableViewCell(at: indexPath)
}
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: defaultCell, for: indexPath)
return cell
}
}

private func reserveTableViewCell(at indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: reserveCell, for: indexPath) as! ReserveTableViewCell
return cell
}

private func descriptionTableViewCell(at indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: descriptionCell, for: indexPath) as! DescriptionTableViewCell
return cell
}

private func dateTimeTableViewCell(at indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: dateTimeCell, for: indexPath) as! DateTimeTableViewCell
return cell
}

private func mapTableViewCell(at indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: mapCell) as! MapTableViewCell
cell.detailController = self
return cell
}

private func uberTableViewCell(at indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: uberCell, for: indexPath) as! UberTableViewCell
return cell
}

最佳

最佳答案

嗯,创建细胞很慢。知道什么需要这么多时间,现在很难给你任何建议。使用 time profiler以确定有问题的代码。

关于ios - 滚动多个单元格类型时 UITableView 滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48324045/

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