Search code examples
swiftuitableviewuiscrollviewloaduiactivityindicatorview

Swift tableView bottom loading indicator


I am currently struggling with implementing a bottom loading indicator for my app, exactly like Instagram and Facebook has. Simply I want to show a loading indicator at the bottom (on reverse drag) just like a normal table view loading.

Here is the code that I have for the regular table view update:

var refreshControl: UIRefreshControl!

//In viewDidLoad

refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: "Refresh:", forControlEvents: UIControlEvents.ValueChanged)
tableView.addSubview(refreshControl)

In my func Refresh() I simply just fetch the data, and controls the activity indicator from there. However, how would I approach this, if I wanted to enable this in the bottom of my tableView?

Help is much appreciated.


Solution

  • Add it to the table footer view

    tableView.tableFooterView = footerView
    

    Adding a refreshControl would be difficult. Add a UIIndicatorView to the footerview. Implement scrollViewDidScroll:

    func scrollViewDidScroll(scrollView: UIScrollView) {
        if (scrollView.contentOffset.y + scrollView.frame.size.height) >= scrollView.contentSize.height {
            tableView.tableFooterView!.hidden = true
            // call method to add data to tableView
        }
    }