我正在UITableView上使用分页,在第一次加载后,当下一个项目即将到来时或者当我重新加载tableView时它闪烁一秒然后到达它的最后位置。但是每次遇到困难时都不会发生这种情况。有人可以帮我吗?
以下是我用于在tableView
中重新加载数据的代码func handleWSSuccessResponse(_ arrRestaurant:[Restaurant],filterBy:filteringByValues){
let offSet = self.IBtblUserFeed.contentOffset
print(arrRestaurant.count)
if (self.arrRestaurants.count > 0) {
if arrRestaurant.count > 0 && arrRestaurant.count <= 10 {
if arrRestaurant.count % 10 != 0 {
isDataLoading = false
actInd.stopAnimating()
}
if !(self.isFromRefresh) {
self.arrRestaurants = self.arrRestaurants + arrRestaurant
}
DispatchQueue.main.async {
if (self.isFromRefresh) {
self.IBtblUserFeed.reloadData()
} else {
UIView.setAnimationsEnabled(false)
self.IBtblUserFeed.reloadData()
UIView.setAnimationsEnabled(true)
self.IBtblUserFeed.layoutIfNeeded()
self.IBtblUserFeed.setContentOffset(offSet, animated: false)
}
}
} else {
isDataLoading = false
DispatchQueue.main.async {
if (self.isFromRefresh) {
self.IBtblUserFeed.reloadData()
} else {
UIView.setAnimationsEnabled(false)
self.IBtblUserFeed.reloadData()
self.IBtblUserFeed.layoutIfNeeded()
self.IBtblUserFeed.setContentOffset(offSet, animated: false)
UIView.setAnimationsEnabled(true)
}
}
}
} else {
self.arrRestaurants = arrRestaurant
if arrRestaurant.count % 10 != 0 {
isDataLoading = false
actInd.stopAnimating()
}
if self.arrRestaurants.count == 0 {
self.IBtblUserFeed.tableHeaderView = nil
self.IBtblUserFeed.tableHeaderView?.isHidden = true
} else {
if filterBy.isFiltering{
} else {
self.IBtblUserFeed.tableHeaderView = self.header()
}
self.IBtblUserFeed.tableHeaderView?.isHidden = false
}
if filterBy.isFiltering{
self.reloadTableView()
// tejas changes
// filterRestaurant(filterBy: filterBy)
}else{
self.reloadTableView()
}
}
}
答案 0 :(得分:0)
你的示例代码太混乱了无关紧要的事情,无法给出可靠的答案;但是,我认为这个问题与reloadData
的使用有关;您应该使用insertRows(at:with:)
来获得平滑的追加行。
因此,每当您将餐厅模型对象附加到您的数组时(从代码看起来您从未应用其他更改,如修改或删除),生成新行的索引路径...
let indexPaths = (countBeforeAdding..<countAfterAdding).map { IndexPath.init(row: $0, section: 0) }
...并将它们插入表格视图中:
tableView.beginUpdates()
tableView.insertRows(at: indexPaths, with: .automatic)
tableView.endUpdates()