title: Swift tableView Pagination
body: <p>I have success working tableview with json parsing codes.But may have 1000 more item so need pagination when scrolling bottom side. I dont know how can i do this my codes under below. For objective-c have a lot of example but for swift i didnt find working example. Im waiting your helps. I think will be help too many people. Thank you ! </p>
  
  <pre><code>import UIKit
  
  class ViewController: UIViewController, UITableViewDataSource,UITableViewDelegate {
  
      let kSuccessTitle = "Congratulations"
      let kErrorTitle = "Connection error"
      let kNoticeTitle = "Notice"
      let kWarningTitle = "Warning"
      let kInfoTitle = "Info"
      let kSubtitle = "You've just displayed this awesome Pop Up View"
  
  
      @IBOutlet weak var myTableView: UITableView!
      @IBOutlet weak var myActivityIndicator: UIActivityIndicatorView!
  
      var privateList = [String]()
  
      override func viewDidLoad() {
          super.viewDidLoad()
          // Do any additional setup after loading the view, typically from a nib.
  
      }
  
      override func viewWillAppear(animated: Bool) {
          super.viewWillAppear(animated)
  
          loadItems()
  
      }
  
      override func didReceiveMemoryWarning() {
          super.didReceiveMemoryWarning()
          // Dispose of any resources that can be recreated.
      }
  
  
      internal func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int
      {
          return privateList.count
      }
  
  
  
  
      internal func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -&gt; UITableViewCell
      {
  
         let cell:myCell = tableView.dequeueReusableCellWithIdentifier("myCell") as! myCell
  
          cell.titleLabel.text = privateList[indexPath.row]
  
  
          return cell
      }
  
  
      func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
  
          if (editingStyle == UITableViewCellEditingStyle.Delete){
  
           print(indexPath.row)
  
  
              let alert = SCLAlertView()
              alert.addButton("Hayır"){ }
              alert.addButton("Evet") {
  
                  self.myTableView.beginUpdates()
  
                   self.privateList.removeAtIndex(indexPath.row)
                  tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Left)
                  print("Silindi")
  
                  self.myTableView.endUpdates()
  
                    self.loadItems()
  
              }
              alert.showSuccess(kSuccessTitle, subTitle: kSubtitle)
  
          }
  
  
      }
  
  
  
  
  
      func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -&gt; Bool {
          // the cells you would like the actions to appear needs to be editable
          return true
      }
  
  
  
      override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
  
  
          if(segue.identifier == "Detail") {
  
              let destinationView = segue.destinationViewController as! DetailViewController
  
              if let indexPath = myTableView.indexPathForCell(sender as! UITableViewCell) {
  
                  destinationView.privateLista = privateList[indexPath.row]
  
              }
          }
      }
  
  
  
      internal func tableView(tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -&gt; CGFloat
      {
          return 0.0
      }
  
  
      func loadItems()
      {
       loadItemsNow("privateList")
  
      }
  
      func loadItemsNow(listType:String){
          myActivityIndicator.startAnimating()
          let listUrlString =  "http://bla.com/json2.php?listType=" + listType + "&amp;t=" + NSUUID().UUIDString
          let myUrl = NSURL(string: listUrlString);
          let request = NSMutableURLRequest(URL:myUrl!);
          request.HTTPMethod = "GET";
  
          let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
              data, response, error in
  
              if error != nil {
                  print(error!.localizedDescription)
                  dispatch_async(dispatch_get_main_queue(),{
                      self.myActivityIndicator.stopAnimating()
                  })
  
                  return
              }
  
  
              do {
  
                  let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSArray
  
                  if let parseJSON = json {
  
  
                          self.privateList = parseJSON as! [String]
  
                  }
  
              } catch {
                  print(error)
  
              }
  
              dispatch_async(dispatch_get_main_queue(),{
                  self.myActivityIndicator.stopAnimating()
                  self.myTableView.reloadData()
              })
  
  
          }
  
          task.resume()
      }
  
  
  }
  </code></pre>