Добрый день! Бьюсь с возможностью организации подгрузки ячеек таблицы в UITableViewCell. Необходимо сделать близкое к приложению Цукерберг Позвонит.
Я попробовал использовать библиотеку SVPullToRefresh - по образу и подобию
jslim.net/blog/2014/04/01/infinite-scroll-using-on... (ну только на свифте), но при добавлении вся таблица буквально дергается.
Попробовал добавить в методе
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
if(indexPath.row == self.currentPage * 10 - 3){
self.getNextNews()
}
}
Вызвать метод получения новых элементов а в нем уже получить данные и через beginUpdates - endUpdates обновить, но снова идет отвратительное дерганье таблицы.
func getNextNews(){
Alamofire.request(.GET, urlQuery, parameters: ["universityId": UBUniversitySettings.getUniversityId(), "page" : currentPage, "pageSize" : 10]).responseJSON{ (request, response, JSON, error) in
println(JSON)
var newsResponse = JSON! as NSArray
if(newsResponse.count > 0){
var newsIndex:NSInteger = 0
var paths:NSMutableArray = NSMutableArray()
for newsItemResponse in newsResponse{
var newsItem:NewsModel = NewsModel()
newsItem.newsImage = newsItemResponse.valueForKey("previewPic") as? String
newsItem.newsTitle = newsItemResponse.valueForKey("title") as? String
newsItem.newsDescription = newsItemResponse["content"] as? String
newsItem.newsId = newsItemResponse["id"] as? String
newsItem.newsDate = NSDate(timeIntervalSince1970: newsItemResponse["createDate"] as Double/1000)
self.tableViewNews.addObject(newsItem)
var indexPathVal = self.currentPage * 10 + newsIndex
var indexPath = NSIndexPath(forRow: indexPathVal as Int, inSection: 0)
paths.addObject(indexPath)
newsIndex = newsIndex + 1
}
self.newsTableView.beginUpdates()
self.newsTableView.insertRowsAtIndexPaths(paths, withRowAnimation: UITableViewRowAnimation.Left)
self.currentPage = self.currentPage + 1
self.newsTableView.endUpdates()
}
}
}
Если кто сталкивался с такой задачей, скажите, как избавлялись от этого