2017-03-06 3 views
1

私はデモアプリケーションでページネーションを実装しようとしています。私はSDWebImageを使用してAPIから多くの画像を表示するためにUICollectionViewを使用しています。 APIは次のようなページ設定をサポートしています:ページビューは、collectionviewでどのように機能しますか?

私の問題は、このnextPageの画像を私のcollectionviewに表示する方法です。

{ 
    "meta":{ 
     "code":200 
    }, 
    "data":{ }, 
    "pagination":{ 
     "total":86, 
     "totalPages":3, 
     "page":1, 
     "nextPage":2, 
     "nextPageUrl":"http://.............?page=2" 
    } 
} 

そして、私の目的collectionviewにこのnextPageUrlの写真を表示するようにということです。

class StoreViewController: UIViewController,UICollectionViewDataSource,UICollectionViewDelegate { 

    @IBOutlet var MyStoreCollectionView: UICollectionView! 


    var alldata: [PopulerMagazalarData]? 
    var indexPath: IndexPath? 
    var storeData : [PopulerMagazalarData] = [] 

    let pagenumber = 1 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     if let indexPath = self.indexPath, let storeData = self.alldata?[indexPath.row] { 

     let storeusername = storeData.username 
     GetDataFromUrl(from: "https://............./\(storeusername!)?page=\(pagenumber)") 

     } 

    } 

そして、私のデータ

func GetDataFromUrl(from:String){ 

     Alamofire.request(from, method: .get).validate().responseJSON { response in 
      switch response.result { 
      case .success(let value): 
       let json = JSON(value) 

       self.storeData = [PopulerMagazalarData]() 

             //...Creating Data Obj. 

         let data = PopulerMagazalarData() 

         let username = json["data"]["store"]["user"]["username"].string 
         let userpic = json["data"]["store"]["user"]["profilePicture"].string 
         let productsCount = json["data"]["store"]["productsCount"].int 
         let description = json["data"]["store"]["description"].string 
         let followedby = json["data"]["store"]["user"]["counts"]["followedBy"].int 

         let count:Int? = json["data"]["products"].array?.count 
         if let ct = count { 

          for index in 0...ct-1{ 

         let images = json["data"]["products"][index]["images"]["standart"]["url"].string 

           data.img1 = images 
          self.storeData.append(data) 
          } 
         } 

         //***************** 
         data.username = username 
         data.profilPic = userpic 
         data.producsCount = productsCount 
         data.desc = description 
         data.followedby = followedby 

         //****************** 
         self.storeData.append(data) 


        // for refresh collecitonView 
        self.refresh_now() 



      case .failure(let error): 
       print(error) 
      } 
     } 
    } 

    //...CollectionView ReloadData func... 
    func refresh_now(){ 

     DispatchQueue.main.async (
      execute: 
      { 
       self.MyStoreCollectionView.reloadData() 
     } 
     ) 

    } 

と、これは私のcollectionviewファンドです... URLから楽しみを得る:

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return 1 
    } 

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
     return 1 
    } 

答えて

0

、ここでは私のコードです最初にcheck my this answerを入力し、コレクションビューにフッタービューを追加しますfooterviewがネットワークコールを呼び出し、以前の配列に新しい配列を追加してコレクションビューを再ロードする

0

CCBottomRefreshControlの簡単な解決方法を試してみましょう。簡単なように扱う必要があります。UIRefreshController

let bottomRefreshController = UIRefreshControl() 

bottomRefreshController.triggerVerticalOffset = 50 

bottomRefreshController.addTarget(self, action: #selector(ViewController.refreshBottom), forControlEvents: .ValueChanged) 

collectionView.bottomRefreshControl = bottomRefreshController 

func refreshBottom() { 
    //api call for loading more data 
    loadMoreData() 
} 
+0

私はデフォルトを使用することをお勧めします。私はfooterview/UICollectionElementKindSectionFooterを意味します –

+0

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView あなたは最後のセルをチェックするためにこのメソッドを使用できます。 –

関連する問題