Popularity
2.4
Stable
Activity
0.0
Stable
94
5
12

Programming language: Swift
License: MIT License
Latest version: v0.1.1

AZCollectionViewController alternatives and similar libraries

Based on the "Table View / Collection View" category.
Alternatively, view AZCollectionViewController alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of AZCollectionViewController or a related project?

Add another 'Table View / Collection View' Library

README

AZCollectionView Controller

Awesome Swift version Support Dependecy Manager Version License Platform

Features

  • Automatic pagination handling
  • No more awkward empty CollectionView screen
  • AZ CollectionVIew controller give you advantage to connect your (Loading, no result, error ) views via Interface builder
  • You can also add your custom xib as dummy views (loading, error, no result)

Installation

CocoaPods

CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

$ gem install cocoapods

To integrate AZ CollectionVIew controller into your Xcode project using CocoaPods, specify it in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!

target '<Your Target Name>' do
pod 'AZCollectionViewController'
end

Then, run the following command:

$ pod install

Usage

Step 1

  • Extend your view controller from AZCollectionViewController ```swift

class ViewController: AZCollectionViewController {

var lastIndex = 0
var results = [String]()

override func viewDidLoad() {

    nextLoadingCellNibName = "LoadingCollectionViewCell"
    nextLoadingCellIdentifier = "LoadingCollectionViewCell"
    loadNextPageLoaderCell(nibName: nextLoadingCellNibName, cellIdentifier: nextLoadingCellIdentifier) // Only if you want personal NextPage loading cell

    super.viewDidLoad()
    self.fetchData()

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

}


#### Step 2

* Same as AZTableVIewController
* Set the loading views outlet as given below
* Connect collectionView outlet as well

![Alt text](http://i.imgur.com/SWYNa2W.png "AZTableView-step2")

![Alt text](http://i.imgur.com/Zi9RKJ2.png "AZTableView-step2")

* To load views from custom .xib files 

```swift 

class ViewController: AZCollectionViewController {
    override func viewDidLoad() {

        self.loadLoadingView(nibName: "your nib name") // if bundle is nil
        self.loadErrorView(nibName: "your nib name", bundle: yourBundle) // if custom bundle

        super.viewDidLoad()
        self.fetchData()
    }
}
  • If your xibs are in main bundle than use swift self.loadLoadingView(nibName: "your nib name") // if bundle is nil Else use swift self.loadLoadingView(nibName: "your nib name", bundle: yourBundle)

Step 3

  • And override AZCollectionView cellForRow function.
extension ViewController {

    override func AZCollectionView(_ collectionView: UICollectionView, cellForRowAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! TestCollectionViewCell

        cell.feedImage.image = UIImage(named: self.results[indexPath.row])

        return cell
    }

    override func AZCollectionView(_ collectionView: UICollectionView, heightForRowAt indexPath: IndexPath) -> CGSize {

        return CGSize(width: (collectionView.frame.size.width / 3) - 6, height: (collectionView.frame.size.width / 3) - 4)

    }
}


Step 4

  • Override two more functions "fetchData" and "fetchNextData"
//MARK: - API Call
extension ViewController {

    override func fetchData() {
        super.fetchData()

        FakeService.getData { (error, results) in

            if let resu = results {
                self.results.removeAll()
                self.results.append(contentsOf: resu)
                self.didfetchData(resultCount: resu.count, haveMoreData: true)
            }

            else if let error = error {
                self.errorDidOccured(error: error)
            }
        }
    }

    override func fetchNextData() {
        super.fetchNextData()

        FakeService.getData (offset: results.count) { (error, results) in

            if let resu = results {

                self.results.append(contentsOf: resu)
                if self.results.count < 45 { // you probably get next page exist from service.
                    self.didfetchData(resultCount: resu.count, haveMoreData: true)
                }
                else {
                    self.didfetchData(resultCount: resu.count, haveMoreData: false)
                }
            }
            else if let error = error {
                self.errorDidOccured(error: error)
            }
        }
    }
}

Done

Thats it, you successfully integrate AZCollectionViewController

License

AZCollectionViewController is available under the MIT license. See the LICENSE file for more info.

Author

Afroz Zaheer - (https://github.com/AfrozZaheer)


*Note that all licence references and agreements mentioned in the AZCollectionViewController README section above are relevant to that project's source code only.