У меня есть таблицаView, которая привела данные из url api на 10 элементов. Когда он прокручивается вниз, я пытаюсь получить следующие 10 элементов и вставить их в строку. Так в viewDidload я получаюВставка строки в ошибку UItableView
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
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
self.tableViewNews.addObject(newsItem)
// self.newsTableView.reloadData()
self.newsTableView.reloadSections(NSIndexSet.init(index: 0), withRowAnimation:UITableViewRowAnimation.Bottom)
}
self.currentPage = self.currentPage + 1
}
и
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
if(indexPath.row == self.currentPage * 10 - 1){
self.getNextNews()
}
}
я получаю следующие пункты
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
self.tableViewNews.addObject(newsItem)
// self.newsTableView.reloadData()
self.newsTableView.reloadSections(NSIndexSet.init(index: 0), withRowAnimation:UITableViewRowAnimation.Bottom)
var indexPathVal = self.currentPage * 10 + newsIndex
var indexPath = NSIndexPath(forRow: indexPathVal as Int, inSection: 0)
paths.addObject(indexPath)
newsIndex = newsIndex + 1
}
self.newsTableView.reloadData()
self.newsTableView.beginUpdates()
self.newsTableView.insertRowsAtIndexPaths(paths, withRowAnimation: UITableViewRowAnimation.Bottom)
self.currentPage = self.currentPage + 1
self.newsTableView.endUpdates()
}
}
}
But my app crashed and give me a message
Invalid обновление: неверное число строк в разделе 0. Число строк содержится в существующий раздел после обновления (11) должен быть равен количеству строк, содержащихся в этом разделе, перед обновлением (11) плюс или минус количество строк, вставленных или удаленных с этой секунды (1 вставлено, 0 удалено) и плюс или минус количество строк, перемещенных в или из этого раздела (0 перемещено, 0 выведено). '
функ Tableview (Tableview: UITableView, numberOfRowsInSection раздел: Int) -> Int { возвращение self.tableViewNews.count } здесь это numberOfRowsInSection, и я добавил self.tableViewNews.addObject (newsItem) в массив. Также в отладчике число строк после обновления равно 11, поэтому я думаю, что это нормально – nabiullinas
@nabiullinas. Он также говорит о плюсе/минусе обновления, и вы добавили строку, которая при добавлении делает это 12. :) –
Если вы используете только один метод для перезагрузки/вставки разделов/строк, вы не должны его обертывать, чтобы начать/завершить обновления –