UITableView загружает больше при прокрутке вниз
Я хотел бы загрузить больше данных и создать дополнительные ячейки, когда пользователь прокручивается в нижней части таблицы. Я использую данные JSON и MySql.
func dataJsonFromURL(url:String)->NSArray
{
if let data = NSData(contentsOfURL: NSURL(string: url)!) {
return ((try! NSJSONSerialization.JSONObjectWithData(data, options: [])) as! NSArray)
}
else{
return data
}
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("NCell", forIndexPath: indexPath) as! TableViewCell22
cell.backgroundColor = UIColor .clearColor()
let mindata = (data[indexPath.row] as! NSDictionary)
}
Ответы
Ответ 1
вы должны использовать этот метод
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
let lastElement = dataSource.count - 1
if indexPath.row == lastElement {
// handle your logic here to get more items, add it to dataSource and reload tableview
}
}
Ответ 2
Xcode 8, Swift 3
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
let lastElement = dataSource.count - 1
if !loadingData && indexPath.row == lastElement {
indicator.startAnimating()
loadingData = true
loadMoreData()
}
}
Ответ 3
Я использовал этот метод, и он работает для меня
func scrollViewDidScroll(scrollView: UIScrollView) {
let offsetY = scrollView.contentOffset.y
let contentHeight = scrollView.contentSize.height
if offsetY > contentHeight - scrollView.frame.size.height {
loadMoreDataFromServer()
self.tableView.reloadData()
}
}
Ответ 4
Вам нужен один очень удобный метод делегата:
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell , forRowAtIndexPath indexPath: NSIndexPath) {
}
Этот метод дает текущую отображаемую строку. Используйте indexPath, который он предоставляет, чтобы определить, когда вы приближаетесь к нижней части таблицы. Затем получите больше JSON и перезагрузите таблицу.
Ответ 5
Его назвали разбиение на страницы на таблицу. Пагинация используется для эффективного отображения больших данных на столе. Вот вы можете получить хороший учебник для цели-c и быстро взглянуть на этот вопрос.
И вы можете скачать пример в Быстро отсюда.
Ответ 6
Используйте эту библиотеку. https://github.com/samvermette/SVPullToRefresh
Это полностью заполнит ваши требования. Вам просто нужно менять номер страницы или временную метку каждый раз, когда будет вызываться новый веб-сервис.