2017-02-08 3 views
0

URLAlamofireを使用してUICollectionViewセルにラベルを含むビューで画像を表示するにはどうすればいいですか?

import Alamofire 
import AlamofireImage 

class AppCategory: NSObject { 
var id: NSNumber? 
var title: String? 
var apps: [App]? 
var type: NSNumber? 

static func fetchFeaturedApps(completionHandler: @escaping ([AppCategory]) ->()) { 

let jsonResult = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String: AnyObject] 
var appCategories = [AppCategory]() 
      let sections = OFFERIM["sections"] as! [Dictionary<String, AnyObject>] 
      for i in 0..<sections.count { 
       var appCategory = AppCategory() 
       var apps = [App]() 

       let sectionTitle = sections[i]["title"] as! String 
       appCategory.title = sectionTitle 
       let sectionType = sections[i]["type"] as! NSNumber 
       appCategory.type = sectionType 
       let sectionId = sections[i]["id"] as! NSNumber 
       appCategory.id = sectionId 
       // for Apps inside each section 
       let lists = sections[i]["lists"] as! [String: AnyObject] 
       for j in 0..<lists.count{ 
        let app = App() 

        let id = lists[j]["id"] as! NSNumber 
        app.id = id 

        let thumb = lists[j]["thumb"]! as! String 

        Alamofire.request(thumb).responseImage { response in 

         if let image = response.result.value { 
          app.image = image 
          print("image downloaded: \(image)") 
         } 
        } 
        let title = lists[j]["title"] as! String 
        app.title = title 

        apps.append(app) 
       } 
       appCategory.apps = apps 
       appCategories.append(appCategory) 
      } 
      DispatchQueue.main.async(execute: { 
       completionHandler(appCategories) 
      }) 
     }catch{ 
      print("JSON Processing Failed") 
     } 
     }.resume() 
} 
} 

からデータをダウンロードする際に、私はそうUICollectionViewでAppStoreのようなアプリを作ってるんだと私はモデル

class App: NSObject { 
var id: NSNumber? 
var title: String? 
var image: UIImage? 

} 

としてこれらのクラスを持っていると私はViewControllerをでviewDidLoadfeaturedAppsを呼び出します 何が起こったかは、ラベルがロードされたビューは表示されますが、コレクションビューには表示されません。

イメージを表示するには、各行をスクロールする必要があります。

と私は問題を解決できません。

+0

あなたはcollectionView.reloadData()を呼び出していますか?あなたがスクロールした後でそれらを見るなら、これは問題かもしれません。 – JustinM

+0

@JustinMこの静的ファンクションを呼び出した後は絶対に –

+0

イメージのアラモファイヤーリクエストが独自のクロージャーになっているので、イメージがダウンロードされる前にcompletionHandlerを呼び出す可能性が最も高いです。スクロールするとイメージが表示されるので、イメージを取得してコレクションビューを再ロードするタイミングと関係します – JustinM

答えて

0

URLを保存し、URLをイメージビューに設定するには、AlamofireImageを使用します。

imageView.af_setImage(withURL: url) 
+0

同じ結果! –

関連する問題