uitableviewcontroller swift xcode uitableview

swift - uitableviewcontroller - UITableView carga más cuando se desplaza hacia abajo



uitableview swift programmatically (6)

Me gustaría cargar más datos y crear celdas adicionales cuando el usuario se desplace a la parte inferior de la tabla. Estoy usando datos JSON y 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) }


Necesitas un método de delegado muy útil:

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell , forRowAtIndexPath indexPath: NSIndexPath) { }

Este método le da la fila actual mostrada. Use la indexPath que proporciona para determinar cuándo se está acercando al final de la tabla. Luego consigue más JSON y vuelve a cargar la tabla.


Su llamada paginación a tableview. La paginación se utiliza para mostrar grandes datos en una tabla de manera efectiva. Here''s puede obtener un buen tutorial para object-c y para una mirada rápida a esta Question .

Y puedes descargar el ejemplo en swift desde Here .


Usé este método y me funciona.

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() } }



tienes que usar este metodo

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 } }


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() } }