I try to use the UIRefreshControl with swift 1.2 and works fine except the UI. It is jumping and I dont know why. Here is what I am doing:
class ViewController: UIViewController {
     var refreshControl:UIRefreshControl!
    @IBOutlet weak var tableView: UITableView!
    override func viewDidLoad() {
        super.viewDidLoad()
        self.refreshControl = UIRefreshControl()
        self.refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
        self.refreshControl.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
        self.tableView.addSubview(refreshControl)
    }
    func refresh(sender:AnyObject) {
        // Code to refresh table view
    }
}
And you can download my poc project from here: POC project
While you pull down the tableView, suddenly jump a little bit down. Has anybody any idea why?
If I use with UITableViewController, It works fine but I dont want to use this UI object. I would like to use a simple UITableView in a UIViewController.
I have experienced this problem and I believe it is because the UIRefreshControl was meant for UITableViewController.
I think you should try to insert the view at index 0 like below. (Excuse the objective-c)
[self.tableView insertSubview:_refreshControl atIndex:0];
Edit
Do you have code to stop the refreshControl?
    // End Refreshing
    if ([self.refreshControl isRefreshing]) {
        float delayInSeconds = 1.0;
        dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
        dispatch_after(popTime, dispatch_get_main_queue(), ^{
            [self.refreshControl endRefreshing];
        });
    }
I found a solution, it works:
override func viewDidLoad() {
    super.viewDidLoad()
    self.refreshControl = UIRefreshControl()
    self.refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
    self.refreshControl.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
    var tableViewC = UITableViewController()
    tableViewC.refreshControl = self.refreshControl
    self.tableView = tableViewC.tableView
    self.view.addSubview(self.tableView)
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With