Добавить ActivityIndicator в нижней части UITableView при загрузке
Я хочу добавить ActivityIndicator в нижней части моего UITableView, когда отображается последняя ячейка, в то время как я получаю больше данных, а затем, когда данные будут получены, скройте его.
Итак, я прокручиваю нижнюю часть → отображаемую последнюю строку → прядильщик начинает вращаться во время получения данных → Приняты данные, спрячет счетчик → новые данные, добавленные в представление таблицы.
Любые советы о том, как я могу это достичь?
Спасибо;)
Ответы
Ответ 1
Добавить эту функцию
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
let lastSectionIndex = tableView.numberOfSections - 1
let lastRowIndex = tableView.numberOfRows(inSection: lastSectionIndex) - 1
if indexPath.section == lastSectionIndex && indexPath.row == lastRowIndex {
// print("this is the last cell")
let spinner = UIActivityIndicatorView(activityIndicatorStyle: .gray)
spinner.startAnimating()
spinner.frame = CGRect(x: CGFloat(0), y: CGFloat(0), width: tableView.bounds.width, height: CGFloat(44))
self.tableview.tableFooterView = spinner
self.tableview.tableFooterView?.isHidden = false
}
}
и tableFooterView должен скрываться при загрузке данных.
Ответ 2
Swift 4
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
let lastSectionIndex = tableView.numberOfSections - 1
let lastRowIndex = tableView.numberOfRows(inSection: lastSectionIndex) - 1
if indexPath.section == lastSectionIndex && indexPath.row == lastRowIndex {
// print("this is the last cell")
let spinner = UIActivityIndicatorView(style: .gray)
spinner.startAnimating()
spinner.frame = CGRect(x: CGFloat(0), y: CGFloat(0), width: tableView.bounds.width, height: CGFloat(44))
self.tableview.tableFooterView = spinner
self.tableview.tableFooterView?.isHidden = false
}
}
Ответ 3
Один из способов - добавить пользовательскую ячейку с UIActivityIndicatorView. Вы можете поместить его в отдельный раздел. Есть много способов сделать это.
Или вы проверяете это: https://github.com/evnaz/ENFooterActivityIndicatorView
Ответ 4
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
let total = (self.array.count )
if (indexPath.item + 1) == (self.array.count ){
self.limit = Int(self.limit+20) // table item render limit
if total < limit {
let spinner = UIActivityIndicatorView(activityIndicatorStyle: .gray)
spinner.startAnimating()
spinner.frame = CGRect(x: CGFloat(0), y: CGFloat(0), width: tableView.bounds.width, height: CGFloat(44))
self.myTableView.tableFooterView = spinner
self.myTableView.tableFooterView?.isHidden = false
}
}
}