iOS-swift如何使用分页制作表格视图?

时间:2015-11-02 17:00:24

标签: ios swift uitableview pagination swift2

我正在编写包含大量数据的JSON数据。有时几千条记录。

我想使用分页来显示,例如,每页显示20条记录。 当用户向下滚动时,我想添加下20条记录。

我发送当前页面(www.exampleRequest /& pageCounter = 1)并接收 足够的记录

pageCouter = 1 => 1 * 20 = 0到20条记录
pageCouter = 2 => 2 * 20 = 21到40条记录

但我的问题是 iOS-swift UITableView如何知道何时获得下一页结果?

2 个答案:

答案 0 :(得分:1)

var pageIndex = 1
var dataSource = [DataSourceModel]()

func getDataSource() {

    let parameters: Parameters = [
        "page": pageIndex
    ]
    Alamofire.request("Your URL", method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in

        switch(response.result) {
        case .success(_):
            if let data = response.result.value{
                let json = JSON(data)
                self.procssGetResponce(json: json)
                print("response: \(json)")
            }
            break

        case .failure(_):
            print(response.result.error!)
            break

        }
    }
}
func procssGetResponce(json: JSON) {
//Append Elements in your object 
    //dataSource.append(ELEMENTS)
    tblDataSource.reloadData()
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return dataSource.count + 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    if indexPath.row == dataSource.count {
        let cell = tableView.dequeueReusableCell(withIdentifier: "LoadCell") as! LoadMoreCell
        cell.loadProcess.startAnimating()
        return cell
    } else {
        let cell = tblDataSource.dequeueReusableCell(withIdentifier: "cellId") as! PageListCell

        cell.dataSource = dataSource[indexPath.row]
        cell.setDataSource()
        return cell
    }
}
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        if indexPath.row == dataSource.count {
            pageIndex = pageIndex + 1
            getDataSource()
        }
}

答案 1 :(得分:0)

您可以使用当前的数据计数,并在查询中包含提取计数。

   var initialItems: Int = 0 //Intial Load Item
   var currentItems: Int! //Current Items

使用NSMutableArray添加您的数据并检查以前数据中是否有可用的对象。

   //If previous load data don't contain the same data, update the array of loaddata.
   for object in json {
      if !loadeddata.containsObject(object){
          loadeddata.insertObject(object, atIndex: 0)
      }
   }