Разбивка на страницы в UITableView, как только она окажется внизу

#swift #api #uitableview

Вопрос:

Я пытаюсь сделать разбивку на страницы для своего просмотра таблицы

Я добавил условие для проверки последней ячейки в indexPath, но оно не работает в следующем коде

 func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    if indexPath.row == articles?.articles.count ?? 2 - 1 {
        pageNumber  = 1
       

        catPass = PassUrl(categoryName: titleName ?? "", id: sourceId, searchText: labelText, pageInt: pageNumber)

        APICall.shared.fetchData(category: catPass) { (response) in
            DispatchQueue.main.async {
                self.articles = response
                self.myTableView.reloadData()
            }
        }

    }
   
  
}
 

Когда я прокручиваю вниз до последней ячейки, она больше не загружается.

Как эту функцию можно исправить?

Комментарии:

1. Попробуйте это « если (indexPath.строка >= статьи? .статьи.количество ?? 2) — 1 {«

2. @РаджАкишан все тот же(

3. Каков текущий счет ?

4. @RajaKishan это 1 вот ссылка на полный код, я думаю, что там лучше понять, что мне делать jdoodle.com/iembed/v0/f5K

Ответ №1:

Попробуйте это, это поможет вам сделать это:

 let lastItem = (articles?.articles.count ?? 2) -1 
            if lastItem == indexPath.row {
                if pageNumber < 100{ //in case you have a limit
                    pageNumber  = 1
                     catPass = PassUrl(categoryName: titleName ?? "", id: sourceId, searchText: labelText, pageInt: pageNumber)

          APICall.shared.fetchData(category: catPass) { (response) in
           DispatchQueue.main.async {
              self.articles = response
              self.myTableView.reloadData()
        }
    }
                }

            
 

Комментарии:

1. он обновляет «ограничение» каждый раз, когда я прокручиваю свое представление таблицы. И вместо ApiCall() выше я изменил на : catPass = PassUrl(Имя категории: имя заголовка ?? «», идентификатор: идентификатор источника, текст поиска: текст метки, тип страницы: номер страницы) АПИКалл.поделился. fetchData(категория: catPass) { (ответ) в DispatchQueue.main.async { self.articles = сам ответ. MyTableView.reloadData() } }

2. измените лимит с помощью номера страницы

3. Я изменил номер страницы на номер страницы, можете ли вы взглянуть на это jdoodle.com/iembed/v0/f5M

4. попробуйте это « let lastItem = (количество статей ?? 2) -1 «

5. добавьте код на github, чтобы его можно было загрузить