Я пытаюсь закончить домашнее задание и работаю с 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
Загружать при прокрутке вниз в CollectionView ⇐ IOS
Программируем под IOS
-
Anonymous
1737220704
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
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/55848905/load-when-scrolled-to-bottom-in-collectionview[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия