@Antonnab

Как сделать подгрузку UITableViewCell в таблицу?

Добрый день! Бьюсь с возможностью организации подгрузки ячеек таблицы в 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()

            }
            
        }
    }


Если кто сталкивался с такой задачей, скажите, как избавлялись от этого
  • Вопрос задан
  • 2913 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Sashke
Дерганье происходит из-за insertRowsAtIndexPaths. Если делать обычный [tableView reloadData] то все будет плавно скроллиться.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы