308 votes

UIRefreshControl sans UITableViewController

Juste curieux, car il ne semble pas immédiatement possible, mais y a-t-il une manière sournoise d’exploiter le nouveau iOS 6 classe sans utiliser un sous-classe ?

J’utilise souvent un avec un sous-vue et sont conformes aux et au lieu d’utiliser un `` pur et simple.

388voto

Keller Points 6797

Sur une intuition, et sur la base DrummerB de l'inspiration, j'ai essayé de simplement ajouter un UIRefreshControl "l'instance d'une sous-vue de mon UITableView. Et la magie fonctionne, tout simplement!

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
[self.myTableView addSubview:refreshControl];

Cela ajoute un UIRefreshControl au-dessus de votre table de la vue et fonctionne comme prévu sans avoir à utiliser un UITableViewController :)


EDIT: Ce ci-dessus fonctionne encore mais comme quelques-uns l'ont souligné, il y a un léger "stutter" lors de l'ajout de la UIRefreshControl de cette manière. Une solution consiste à instancier un UITableViewController, puis le réglage de votre UIRefreshControl et UITableView, c'est à dire:

UITableViewController *tableViewController = [[UITableViewController alloc] init];
tableViewController.tableView = self.myTableView;

self.refreshControl = [[UIRefreshControl alloc] init];
[self.refreshControl addTarget:self action:@selector(getConnections) forControlEvents:UIControlEventValueChanged];
tableViewController.refreshControl = self.refreshControl;

95voto

Piotr Tomasik Points 2550

Afin d’éliminer le bégaiement qui est causé par la réponse acceptée, vous pouvez assigner votre à un .

21voto

Tomohisa Takaoka Points 580

Ce que vous essayeriez, c’est utiliser la vue de conteneur à l’intérieur de ViewController vous utilisez. vous pouvez définir propre sous-classe UITableViewController avec tableview dédié et que placer dans le ViewController.

18voto

DrummerB Points 22871

Bien UIRefreshControl est une sous-classe UIView, de sorte que vous pouvez l'utiliser sur son propre. Je ne suis pas sûr que la façon dont elle se rend elle-même. Le rendu pourrait simplement dépendre sur le cadre, mais il a aussi pu compter sur un UIScrollView ou la UITableViewController.

De toute façon, il va y avoir plus d'un hack qu'une solution élégante. Je vous recommande de regarder dans le 3e partie clones ou écrire votre propre.

ODRefreshControl

enter image description here

SlimeRefresh

enter image description here

7voto

boliva Points 2588

Essayer de retarder l’appel à la refreshControl méthode en une fraction de seconde après le tableView recharge son contenu, soit à l’aide de NSObject ou de GCD `` .

J’ai créé une catégorie sur UIRefreshControl pour cela :

Je l’ai testé et cela fonctionne aussi sur les vues de Collection. J’ai remarqué qu’un retard aussi petit que 0,01 secondes suffit :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X