Desplazamiento infinito con UITableView y una matriz

Soy nuevo en Swift y quiero hacer un desplazamiento infinito con una matriz. Aquí está mi class TableViewController

class TableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { var legumes: [String] = ["Eggs", "Milk", "Choqueuet", "Web", "Miel", "Pop", "Eco", "Moutarde", "Mayo", "Thea", "Pomelade", "Gear", "Etc" , "Nop", "Dews", "Tout", "Fun", "Xen" , "Yoga" ] override func viewDidLoad() { super.viewDidLoad() self.tableView.delegate = self self.tableView.dataSource = self func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return self.legumes.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = self.tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! ImageTableViewCell return cell } } 

Quiero mostrar los diez primeros elementos de mi matriz y cuando estoy en la parte inferior de TableViewController, cargará los siguientes diez elementos, etc. No sé cómo hacerlo, veo mucho código en GitHub pero No sé cómo implementarlos.

Muchas gracias.

Considere usar PagingTableView

 class MainViewController: UIViewController { @IBOutlet weak var contentTable: PagingTableView! var legumes: [String] = ["Eggs", "Milk", "Choqueuet", "Web", "Miel", "Pop", "Eco", "Moutarde", "Mayo", "Thea", "Pomelade", "Gear", "Etc" , "Nop", "Dews", "Tout", "Fun", "Xen" , "Yoga" ] override func viewDidLoad() { super.viewDidLoad() contentTable.dataSource = self contentTable.pagingDelegate = self } } extension MainViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return legumes.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! ImageTableViewCell guard legumes.indices.contains(indexPath.row) else { return cell } cell.content = legumes[indexPath.row] return cell } } extension MainViewController: PagingTableViewDelegate { func paginate(_ tableView: PagingTableView, to page: Int) { contentTable.isLoading = true DispatchQueue.main.asyncAfter(deadline: .now() + 1) { self.legumes.append(contentsOf: legumes) self.contentTable.isLoading = false } } } 

Modifique la function de página para que funcione como desee

Lo que estás describiendo se llama pagination . Deberías hacer algo como esto:

 /* Number of page you're loading contents from */ var pageIndex: Int = 1 override func scrollViewDidScroll(scrollView: UIScrollView) { let offsetY = scrollView.contentOffset.y let contentHeight = scrollView.contentSize.height if offsetY > contentHeight - scrollView.frame.size.height { /* increment page index to load new data set from */ pageIndex += 1 /* call API to load data from next page or just add dummy data to your datasource */ /* Needs to be implemented */ loadNewItemsFrom(pageIndex) /* reload tableview with new data */ tableView.reloadData() } }