У меня есть работающее приложение, в котором я использую Alamofire
и SwiftyJSON
для извлечения изображений из API-интерфейса Flicr. Теперь я хочу включить нумерацию страниц в возвращаемые изображения. Я возвращаю 5 изображений, когда приложение запускается, и это число может увеличиться. Я хочу достичь этого с UICollectionView
.
Мои коды написаны ниже. Любая помощь будет оценена. 100 товаров возвращаются на каждой странице.
Услуга
func setData(json: JSON) -> Void {
if let photos = json["photos"]["photo"].array {
for item in photos {
let photoID = item["id"].stringValue
let farm = item["farm"].stringValue
let server = item["server"].stringValue
let secret = item["secret"].stringValue
let title = item["title"].stringValue
let imageString = "https://farm\(farm).staticflickr.com/\(server)/\(photoID)_\(secret)_b.jpg/"
//could use _n.jpg too
let flickrPhoto = FlickrPhotoModel(id: photoID, farm: farm, server: server, secret: secret, flickerImg: imageString, title: title)
flickerPhotos.append(flickrPhoto)
}
}
}
CONTROLLER
class MainVC: UIViewController {
@IBOutlet weak var collectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
collectionView.delegate = self
collectionView.dataSource = self
ServiceProvider.instance.getPhotos { (success) in
if success {
self.collectionView.reloadData()
}
}
}
}
extension MainVC: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: PHOTO_CELL, for: indexPath) as? MainCell {
let flickerPhoto = ServiceProvider.instance.flickerPhotos[indexPath.row]
cell.configueCell(flickerPhotoModel: flickerPhoto, index: indexPath.item)
return cell
}
return MainCell()
}
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return ServiceProvider.instance.flickerPhotos.count
}
}
Другие коды будут предоставлены по запросу.