我创建了一个连接到api的tableView。我正在尝试实现一个加载更多的功能,当你到达tableView的底部时,它会进行一个新的api调用。我已经创建了这个功能,但是当api / json文件中没有对象时。当我到达底部时,它似乎是非常迟钝的,为什么会这样?
检测我何时在屏幕底部并进行api通话
func scrollViewDidScroll(scrollView: UIScrollView!) {
var height = scrollView.frame.size.height;
var contentYoffset = scrollView.contentOffset.y;
var distanceFromBottom = scrollView.contentSize.height - contentYoffset;
if distanceFromBottom < height
{
if isApiCalling == false {
getRecent("URL/recent.php?lastid=\(lastObjectIndex)&limit=\(numberOfRecordsPerAPICall)")
self.tableVIew.reloadData()
}
}
}
GetRecent函数。我甚至创建了一个isAPICalling变量,它确保它不会多次运行api。
func getRecent(url: NSString) {
isApiCalling = true
let recentUrl = NSURL(string: url as String)
var recentRequest = NSURLRequest(URL: recentUrl!)
var recentData = NSURLConnection.sendSynchronousRequest(recentRequest, returningResponse: nil, error: nil)
let jsonArray = JSON(data: recentData!)
for (key: String, subJson: JSON) in jsonArray {
// Create an object and parse your JSON one by one to append it to your array
var newNewsObject = News(id: subJson["id"].intValue, title: subJson["title"].stringValue, link: subJson["url"].stringValue, imageLink: subJson["image_url"].stringValue, summary: subJson["news_text"].stringValue, date: getDate(subJson["date"].stringValue))
recentArray.append(newNewsObject)
}
lastObjectIndex = lastObjectIndex + numberOfRecordsPerAPICall
isApiCalling = false
}
答案 0 :(得分:1)
你可以在tableview部分添加页脚,如果页脚加载然后通过API调用调用下一组,(仅当flag
== - 1时加载页脚
在下一次设置请求时,您可以设置标记(如flag
= 1),该调用已经进行,因此如果用户再次向上和向下滚动,则不会发送请求(如果{{1} } == 1)。
作为响应,将标志设置恢复正常(如flag
= 0),并检查响应,如果没有更多数据,则设置标志以便不加载页脚(如flag
= - 1 )。
P.S。在第一次加载视图时,请确保flag
为0。
可以用这种方式解决你的问题。
HTH,享受编码!!