Как подгружать TableView при прокрутке, а не разом?

Если вы хотите подгружать элементы TableView по мере их прокрутки, а не сразу все сразу, вам понадобится использовать такую функцию в вашем коде:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
let offsetY = scrollView.contentOffset.y
let contentHeight = scrollView.contentSize.height

if offsetY > contentHeight - scrollView.frame.height {
// Когда пользователь достигает конца таблицы, можно подгружать новые элементы данных
// Выполните здесь необходимые действия для добавления новых данных в TableView
}
}

Для реализации этого функционала вы должны делегировать UIScrollViewDelegate протокол в классе вашего ViewController, затем установить его делегатом для TableView:

class YourViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UIScrollViewDelegate {

@IBOutlet weak var tableView: UITableView!

override func viewDidLoad() {
super.viewDidLoad()

tableView.delegate = self
tableView.dataSource = self
tableView.reloadData()
tableView.separatorStyle = .none

// Установка делегата для UIScrollView
tableView.delegate = self
}

//....

}

Когда пользователь прокручивает TableView, функция scrollViewDidScroll будет вызываться. Мы проверяем, достиг ли offsetY (вертикальное смещение) значения contentHeight (высоты контента) минус высота самой TableView. Если это условие выполняется, значит пользователь достиг конца таблицы, и вы можете загружать новые данные.

В блоке, обозначенном комментарием "// Выполните здесь необходимые действия для добавления новых данных в TableView", вы можете выполнить необходимые действия для загрузки новых данных и их отображения. Это может быть запрос к серверу для получения новых данных, добавление новых элементов в источник данных TableView и вызов метода reloadData для обновления отображения TableView.

Обратите внимание, что это базовая реализация для подгрузки данных по мере прокрутки TableView. В практической реализации вам может потребоваться выполнить дополнительную работу, например, управление номером страницы или динамическим изменением размера элементов TableView для более эффективного использования памяти и производительности.