How can I reveal the UIRefreshControl when I update the table programmatically? Using [self.refreshControl beginRefreshing] make the spinner animate but does not reveal it.
You'll have to manually change the contentOffset
of your UITableView
yourself. Be sure to account for the contentInset.top
. It should be something as simple as:
CGPoint newOffset = CGPointMake(0, -[myTableView contentInset].top); [myTableView setContentOffset:newOffset animated:YES];
This will do the trick
- (void)beginRefreshingTableView { [self.refreshControl beginRefreshing]; // check if contentOffset is zero if (fabsf(self.tableView.contentOffset.y) < FLT_EPSILON) { [UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^(void){ self.tableView.contentOffset = CGPointMake(0, -self.refreshControl.frame.size.height); } completion:^(BOOL finished){ }]; } }
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