Software⏱️ 2 min read📅 2026-05-31

How to Fix: UIRefreshControl - beginRefreshing not working when UITableViewController is inside UINavigationController

UIRefreshControl not working when programmatically invoked in UITableViewController inside UINavigationController.

Quick Answer: Try setting the refresh control's "refreshing" property to true before calling beginRefreshing.

To solve this issue, you need to ensure that the view controller is not being pushed onto a navigation stack when using a UIRefreshControl. This can be achieved by setting the refresh control's delegate to self and then manually calling beginRefreshing.

🔧 Solution

  • Set the refresh control's delegate to self:

Example Code:

  1. Set the refresh control's delegate to self:[self.refreshControl setDelegate:self, delegatePriority:1000];
  • Manually call beginRefreshing when needed:

Example Code:

  1. Manually call beginRefreshing when needed:[self.refreshControl beginRefreshing];

By following these steps, you should be able to successfully animate the UIRefreshControl and show the spinner.

Did this fix your problem?

If not, try searching for specific error codes.

🔍 Search Error Database

❓ Frequently Asked Questions