gpt4 book ai didi

swift - 滚动以加载数据。 swift 。 UI表格 View

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

我的代码在通过滚动表格到某一行来加载数据时遇到一些问题,但我找不到原因。

基本上,我希望表格在滚动到总元素 - 5 时加载接下来的 10 个元素。例如,我希望表格最初加载 10 个元素。然后,当它到达第五个元素时,它会加载 11-20 个元素。

我的问题是,当我最初加载表格时,它只加载前 5 个元素,但我可以看到 6-10 之间有一些空格,然后我将表格滚动到第五个元素,它加载接下来的 10 个元素( 6 - 15)。

let rowPerPage = 10

func refreshResults(){
// append data from server //
self.resultsTitleArray.append(...)

if self.resultsTitleArray.count != 0 {
let minCount = min(rowPerPage, self.productImageArray.count) - 1
self.currentResultsTitleArray += self.resultsTitleArray[0...minCount]
}

self.resultsTable.reloadData()
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return currentResultsTitleArray.count
}

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
let diff = rowPerPage - 5
let currentDiff = currentResultsTitleArray.count - 1 - indexPath.row
if currentResultsTitleArray.count != resultsTitleArray.count && diff == currentDiff {
let minCount = min(resultsTitleArray.count, currentResultsTitleArray.count + rowPerPage as Int) - 1
let next = self.currentResultsTitleArray.count
self.currentResultsTitleArray += self.resultsTitleArray[next...minCount]
resultsTable.reloadData()
}
}

最佳答案

就我个人而言,我会稍微更改一下这个 if 语句。您要做的是在距底部 5 处时加载 10 个单元格。但这有点危险,因为它可以轻松加载多次。

您需要一个外部var来显示迄今为止您已完成的最高成功负载并检查

if indexPath.row == currentResultsTitleArray.count - 6 && indexPath.row > self.highestIndexFetchedOn 应该是触发器,然后在成功获取后,在重新加载数据之前,设置 self .highestIndexFetchedOn 到新的 indexPath.row

尚不清楚 rowPerPage 的作用,但我猜测它是 10 并且 minCount 逻辑看起来是正确的,但我会打印以确保您得到您所期望的结果。

if indexPath.row == currentResultsTitleArray.count - 4 && indexPath.row > self.highestIndexFetchedOn {

let minCount = min(resultsTitleArray.count, currentResultsTitleArray.count + rowPerPage as Int) - 1
let next = self.currentResultsTitleArray.count

print("Count:",minCount)

self.currentResultsTitleArray += self.resultsTitleArray[next...minCount]

// etc...

self.highestIndexFetchedOn = indexPath.row
tableView.reloadData()
}

我也不确定这里的数据结构,所有这些数组都包含不同的数据...我认为包含所有值的字典数组会更好,并且可以简化我们正在查看的内容。但在没有看到类其他人的情况下我不能说 100%..

关于swift - 滚动以加载数据。 swift 。 UI表格 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36818883/

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