Загружать при прокрутке вниз в CollectionViewIOS

Программируем под IOS
Ответить
Anonymous
 Загружать при прокрутке вниз в CollectionView

Сообщение Anonymous »

Я пытаюсь закончить домашнее задание и работаю с themoviedb.org. Текущая стоимость фильмов на themoviedb.org составляет всего 20. Как я могу загрузить больше при прокрутке вниз? Я пробовал некоторые решения, но не сработало. И большинство решений предназначены для TableView. Не могу найти что-то полезное для CollectionView.

Ниже приведен код, в котором я загружаю эти 20 фильмов и могу их обновить.

import UIKit

class List: UICollectionViewController {

lazy var refresher: UIRefreshControl = {
...
}()

@IBOutlet var movieCollectionView: UICollectionView!
@IBOutlet weak var flowLayout: UICollectionViewFlowLayout!

var movies: [Movie] = [Movie]()

override func viewDidLoad() {
super.viewDidLoad()

movieCollectionView.refreshControl = refresher
...
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
fetchMovies()
}

// Update Movies List
@objc func fetchMovies() {
ViewController.sharedInstance().fetchMovies { (movies) in
if let movies = movies {
self.movies = movies
DispatchQueue.main.async {
self.movieCollectionView.reloadData()
}
} else {
print("error occured while fetching movies")
}
}

let deadline = DispatchTime.now() + .milliseconds(700)
DispatchQueue.main.asyncAfter(deadline: deadline) {
self.refresher.endRefreshing()
}
}

// CollectionView Functions
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return movies.count
}

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

let cellReuseIdentifier = "collectionCell"
let movie = movies[indexPath.row]
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellReuseIdentifier, for: indexPath) as! CustomCollectionViewCell

cell.poster!.contentMode = UIView.ContentMode.scaleAspectFit

if let posterPath = movie.posterPath {
ViewController.sharedInstance().fetchPoster(path: posterPath, size: ViewController.PosterConstants.RowPoster, completion: { (imageData) in
if let image = imageData {
DispatchQueue.main.async {
cell.poster!.image = image
}
} else {
print("error")
}
})
}
return cell
}

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let controller: Detail = storyboard?.instantiateViewController(withIdentifier: "Detail") as! Detail
controller.movie = movies[indexPath.row]
navigationController?.pushViewController(controller, animated: true)
}

override func numberOfSections(in collectionView: UICollectionView) -> Int {
var numberOfSections = 0
if movies.count > 0 {
numberOfSections = 1
collectionView.backgroundView = nil

} else {
...
noDataLabel.text = "Please wait... I'm thinking..."
...
}
return numberOfSections
}

}



Подробнее здесь: https://stackoverflow.com/questions/558 ... ectionview
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»