2017-09-29 4 views
0

私はタブのようなレイアウトのためにtabmanを使用しています。私の場合、それぞれ2〜3枚の画像を含む4つのタブがあります。その画像をUICollectionViewに表示しています。JSON配列からUICollectionViewへの複数の画像

マイJSON:

"PhotoList": [ 
    { 
     "ID": 0, 
     "DaySeq": 1, 
     "ImgPath": "Images\\1.jpg" 
    }, 
    { 
     "ID": 0, 
     "DaySeq": 1, 
     "ImgPath": "Images\\2.jpg" 
    }, 
    { 
     "ID": 0, 
     "DaySeq": 2, 
     "ImgPath": "Images\\3.jpg" 
    }, 
    { 
     "ID": 0, 
     "DaySeq": 2, 
     "ImgPath": "Images\\4.jpg" 
    }, 
    { 
     "ID": 0, 
     "DaySeq": 3, 
     "ImgPath": "Images\\.jpg" 
    }, 
    { 
     "ID": 0, 
     "DaySeq": 4, 
     "ImgPath": "Images\\6.jpg" 
    }, 
    { 
     "ID": 0, 
     "DaySeq": 5, 
     "ImgPath": "Images\\7.jpg" 
    } 
] 

私はタブ1であっUICollectionViewがあると私は「DaySeq」1.このようなAsを有する画像は、他のタブに、私は「DaySeqで画像をしたいということだけ表示したいしたいです「

2.私は、コード内で何をしようとしています:

override func viewDidLoad() { 
    super.viewDidLoad() 
    Alamofire.request("http://bestapp.in/api/Package/GetItineraryByPackageID/2").responseJSON(completionHandler: { (responseData) in 

     if ((responseData.result.value) != nil) { 

      let swiftyJSONVar = JSON(responseData.result.value!) 
      if let resData = swiftyJSONVar["DayDescrList"].arrayObject, 
      let resImg = swiftyJSONVar["PhotoList"].arrayObject 
      { 

      self.arrRes = resData as! [[String:AnyObject]] 
      self.arrImg = resImg as! [[String:AnyObject]] 

      self.dataSource = self 
      self.bar.location = .top 
      } 
     } 
    }) 
} 
func viewControllers(forPageboyViewController pageboyViewController: PageboyViewController) -> [UIViewController]? { 
    let storyboard = UIStoryboard(name:"Main",bundle:Bundle.main) 

    var viewControllers = [UIViewController]() 
    var tabBarItems : [TabmanBar.Item] = [] 

    for j in 0 ..< self.arrImg.count { 
     for var k in 0 ..< j { 
     k += 1 
     if k == self.arrImg[j]["DaySeq"] as! Int { 
      let vc = storyboard.instantiateViewController(withIdentifier: "childvc") as! childvc 
      vc.imgURL = self.arrImg[j]["ImgPath"] as! String 
      print(self.arrImg[j]["ImgPath"] as! String) 
      self.array.append(self.arrImg[j]["ImgPath"] as! String) 
     } 

     print(array) 
    } 

    } 
    print(array) 
    let vc = storyboard.instantiateViewController(withIdentifier: "childvc") as! childvc 
    vc.array = array 
    self.bar.items = tabBarItems 
    return viewControllers 

} 

答えて

1
  1. はモデル例を作成します。

    class ImagesModel { 
        var id: Int? 
        var path: String? 
        var daySeq: Int? 
    
        func parseWith(json: JSON){ 
        self.id = json["ID"].intValue 
        self.path = json["ImgPath"].intValue 
        self.daySeq = json["DaySeq"].intValue 
        } 
    } 
    
  2. あなたのクラスでImagesModelの配列を作成します。

    var imagesModelArray = [ImagesModel]() 
    
  3. ただ、このモデルの例にあなたの配列を解析する:あなたが必要とするコレクションビューnumberOfItems方法でその後

    let photosListArray = json["PhotoList"].arrayValue 
    for objects in photosListArray{ 
        let model = ImagesModel() 
        model.parseWith(json: objects) 
        self.imagesModelArray.append(model) 
    } 
    
  4. をそのタブに従ってデータを並べ替えるだけです。その後

    func collectionView(_ collectionView: UICollectionView, 
        numberOfItemsInSection section: Int) -> Int { 
        if tab == 0{ 
         return self.imagesModelArray.filter({$0.daySeq == 0}) 
        }else if tab == 1{ 
         return self.imagesModelArray.filter({$0.daySeq == 1}) 
        } 
        ///MORE CONDITIONS 
        //At the End 
        return 0 
    } 
    

cellForItemで濾過配列のこれらのタイプを作成し、これらの濾過アレイから画像を取得します。

スウィフトをお楽しみください。

多分役立つでしょう。質問がある場合は

+0

ありがとうございます –

関連する問題