2015-04-17 50 views
3

我已經創建了一個tableView連接到api。我試圖實現一個加載更多的功能,當你到達tableView的底部時,它會進行新的api調用。我已經創建了這個功能,但是當api/json文件中沒有任何對象時。當我到達底部時,它似乎非常滯後,這是怎麼回事?檢測tableView是在底部滯後

當我在屏幕底部檢測並做了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

https://github.com/vlasov/CCBottomRefreshControl(objc project) –

+0

您是否有任何想法是否可以在swift項目中使用?使用橋樑? –

回答

1

您可以添加頁腳到的tableview部分,如果頁腳獲取負載然後通過調用API調用下一集,(負載頁腳只有flag == - 1)

雖然要求下集,你可以設置標誌(如flag = 1),這個調用已經完成,所以如果用戶再次上下滾動,請求將不會被髮送(如果flag == 1)。

作爲響應,將標誌設置回正常(如flag = 0),並檢查響應,如果沒有更多數據,請設置標誌爲不加載頁腳(例如flag = -1)。

P.S.第一次加載視圖時,確保flag爲0。

可以用這種方式解決你的問題。

HTH,享受編碼!

+0

我不知道我很理解爲什麼添加頁腳? –

+0

如果你的tableview只有1個部分,所以當所有單元格('numberofcellforsection')加載成功時,sectionsfooter將會最後加載,所以你可以通過自定義頁腳設置更多的動畫或味精,並加載新的一堆數據當頁腳獲得負載時, –