title: Pagination for UICollectionView
body: <p>I have created datatable view using UICollectionView.</p>
  
  <p>This is the code:</p>
  
  <pre><code>class PanelViewController: UIViewController{
  
  var TableHeaderArray = NSMutableArray()
  var TableDataArray = NSMutableArray()
  var NumberOfRows = Int()   
  var UlockDataArray = NSMutableArray()
  let dataSource = DataSource()
  
  override func viewDidLoad() {
      super.viewDidLoad()
  
      dataSource.populateData()
  
      let noOfRows = dataSource.NumberOfRows
      self.NumberOfRows = noOfRows + 1
  
      self.UlockDataArray = dataSource.DUDataArray
      self.TableDataArray = dataSource.DTableDataArray   
  
  
      let layout: CustomCollectionViewLayout = CustomCollectionViewLayout()
  
      DataTableCollectionView = UICollectionView(frame: CGRect(x:0, y:0, width:self.TableVu.bounds.width, height:self.TableVu.bounds.height), collectionViewLayout: layout)
      DataTableCollectionView.dataSource = self
      DataTableCollectionView.delegate = self
      self.DataTableCollectionView .registerNib(UINib(nibName: "FixedCellIdentifier", bundle: nil), 
          forCellWithReuseIdentifier: FixedCellIdentifier)
      self.DataTableCollectionView .registerNib(UINib(nibName: "DynamoCellIdentifier", bundle: nil),
       forCellWithReuseIdentifier: DynamoCellIdentifier)
  
      self.TableVu.addSubview(DataTableCollectionView)        
      self.view.addSubview(TableVu)
  
  }
  </code></pre>
  
  <p>}</p>
  
  <pre><code>extension PanelViewController : UICollectionViewDataSource, UICollectionViewDelegate{
      func numberOfSectionsInCollectionView(collectionView: UICollectionView) -&gt; Int{        
          return self.NumberOfRows
      }
  
  func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -&gt; Int {     
      return dataSource.TableHeaders.count        
  }
  
  func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -&gt; UICollectionViewCell {
  
      // My Code to Create Cells using data from TableHeaderArray, TableDataArray and UlockDataArray
  
  }
  
  
  func scrollViewDidScroll(scrollView: UIScrollView) {
      let offsetY = scrollView.contentOffset.y
     let contentHeight = scrollView.contentSize.height
     var returnUmidData = NSMutableArray()
     var returnTableData = NSMutableArray()
  
     if offsetY &gt; contentHeight - scrollView.frame.size.height {   
  
          self.dataSource.populateData()
  
          returnUData = self.dataSource.DUDataArray
          returnTableData = self.dataSource.DTableDataArray
  
  
          let seconds = 5.0
          let delay = seconds * Double(NSEC_PER_SEC)
          let dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
  
          dispatch_after(dispatchTime, dispatch_get_main_queue(), {
  
               self.NumberOfRows += returnTableData.count
  
               let mergetWorkoutData = NSMutableArray(array: self.UlockDataArray)
               mergetWorkoutData.addObjectsFromArray(returnUmidData as [AnyObject])
  
               self.UlockDataArray = mergetWorkoutData
  
               let mergetWorkoutTabelData = NSMutableArray(array: self.TableDataArray)
               mergetWorkoutTabelData.addObjectsFromArray(returnTableData as [AnyObject])
  
               self.TableDataArray = mergetWorkoutTabelData 
  
              self.DataTableCollectionView!.reloadData()
  
          })
     }
  }
  </code></pre>
  
  <p>}</p>
  
  <p>Initialy, I am displaying first 50 records. I need to implement pagination on vertical scroll.
  Each time user reach to end of scroll, I want to make an API call to get the next 50 records.</p>
  
  <p>But in doing so, I am getting an error</p>
  
  <pre><code>"Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]:
   index 51 beyond bounds [0 .. 50]'"
  </code></pre>
  
  <p>I think somehow indexPath is not getting updated but unable to understand where and why or how to update it. Can you please advise?</p>