I've setup a UIRefreshControl in my UITableViewController (which is inside a UINavigationController) and it works as expected (i.e. pull down fires the correct event). However, if I programmatically invoke the beginRefreshing
instance method on the refresh control like:
[self.refreshControl beginRefreshing];
Nothing happens. It should animate down and show the spinner. The endRefreshing
method works properly when I call that after the refresh.
I whipped up a basic prototype project with this behavior and it works properly when my UITableViewController is added directly to application delegate's root view controller, e.g:
self.viewController = tableViewController;
self.window.rootViewController = self.viewController;
But if I add the tableViewController
to a UINavigationController first, then add the navigation controller as the rootViewController
, the beginRefreshing
method no longer works. E.g.
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:tableViewController];
self.viewController = navController;
self.window.rootViewController = self.viewController;
My feeling is this has something to do with the nested view hierarchies within the navigation controller not playing nice with the refresher control - any suggestions?
Thanks
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…