Я пытался создать приложение для обоев, и мой код работал отлично, когда у меня была вся реализация в файле ViewController. И затем я переместил часть кода в другой класс. Вот код.Где должна быть вызвана коллекцияView.reloadData()?
ViewController.swift
override func viewDidLoad() {
super.viewDidLoad()
photoOperations.getStuffFromJson()
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return photoOperations.previewUrlArray.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! CollectionViewCell
cell.backgroundColor = UIColor.whiteColor()
if let img = self.images[indexPath] {
cell.imageView.image = img
} else {
photoOperations.downloadThumbnail(indexPath.row){ (image) in
dispatch_async(dispatch_get_main_queue()) {
if let img = image {
cell.imageView.image = img
self.images[indexPath] = img
} else {
print("Images will be loaded in a few seconds!")
}
}
}
}
return cell
}
PhotoOperations.swift
func getStuffFromJson(){
Alamofire.request(.GET, "https://example.com/api/", parameters: ["key": "123.."])
.responseJSON{ response in
if let value = response.result.value {
let hits = JSON(value)["hits"]
var counter = 0
while counter < hits.count {
if let previewString = hits[counter]["previewURL"].rawString(){
self.previewURL = NSURL(string: previewString)!
self.previewUrlArray.append(self.previewURL!)
counter += 1
} else{ print("Error : A previewURL wasn't found.")
}}}}}
func downloadThumbnail(forIndexPathAtRow : Int , completion: (UIImage?)->Void) {
if previewUrlArray.count > 0 {
... // create URL task , session etc.
}
}
Как перезагрузить данные в ViewController? Я попробовал добавить параметр collectionView к методу getStuffFromJSON
и вызывать collectionView.reload в конце. Но это не работает. Также я получаю 0 как previewURLArray.count
в методе numberOfItemsInSection
.
Вы должны добавить укупорочное завершения на вашем 'getStuffFromJson' и передать массив обратно в ViewController, то там внутри перезагрузите, я вижу 'downloadThumbnail', который вы уже делаете, но почему бы не сделать для другого? – Tj3n
Мне это даже не приходило в голову. Большое спасибо – 209135
Что не было? Не передавайте tableView в функцию, но завершайте закрытие записи и передавайте код vc pass – Tj3n