滚动到最后一个单元格后,Swift TableView加载下一页

时间:2015-04-13 14:00:18

标签: uitableview swift

我有tableview控制器。它从api获取数据并加载第1页。 当我滚动当前页面的底部时,我想转到下一页。 有没有办法实现这个?

      var currentPage = 1
        func loadArticles(){
            let url = "http://yazar.io/api/article/feed/" + String(currentPage)
            Alamofire.request(.GET, url).responseJSON { (Request, response, json, error) -> Void in
                if (json != nil){
                    var jsonObj = JSON(json!)
                    if let data = jsonObj["articles"].arrayValue as [JSON]?{
                        self.articles = data
                        self.tableView.reloadData()
                        self.view.hideLoading()
                        self.refreshControl?.endRefreshing()
                    }
                }
            }
        }
        override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
                var cell = tableView.dequeueReusableCellWithIdentifier("MakaleCell") as MakaleTableViewCell 

        if (indexPath.row == self.articles!.count - 5) {
            currentPage += 1
            println(currentPage)
            loadArticles(currentPage: currentPage)
        }

 cell.article = self.articles?[indexPath.row]        
                return cell      
            }

2 个答案:

答案 0 :(得分:0)

我试过这个,看起来不错。这对你有用吗?

@IBOutlet weak var tableview: UITableView!
var datasource = Array<Int>()
override func viewDidLoad() {
    super.viewDidLoad()
    for i in 0...21
    {
        datasource.append(i)
    }
}
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath)
{
    if indexPath.row == datasource.count-1
    {
        var max = datasource.count;
        for i in max...max+15
        {
            datasource.append(i)
        }
        self.tableview.reloadData()
    }
}

答案 1 :(得分:0)

谢谢大家,扩展数据解决了我的问题...

self.articles?.extend(data)