UIRefreshControl sur viewDidLoad

J'utilise le code suivant pour créer un UIRefreshControl:

- (void) viewDidLoad
{
    [super viewDidLoad];

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

- (void) doLoad
{
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
            //Instead of sleeping, I do a webrequest here.
            [NSThread sleepForTimeInterval: 5];

            dispatch_async(dispatch_get_main_queue(), ^{
                [tableView reloadData];
                [self.refreshControl endRefreshing];
            });
    });
}

Il fonctionne très bien. Si je navigue à mon avis, faites glisser la table, le code s'exécute et affiche les données.

Cependant, ce que je voudrais faire est d'avoir le point de vue dans le "chargement" de l'état dès qu'il apparaît (de cette façon, l'utilisateur sait quelque chose se passe). J'ai essayé d'ajouter le suivant:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [self.refreshControl beginRefreshing];
}

Mais il ne semble pas fonctionner. Lorsque je navigue à vue, il ressemble à un affichage normal (actualisation de contrôle n'est pas visible), en plus quand j'ai essayer de tirer de l'actualisation de contrôle, il n'a jamais fini de se charger.

Évidemment, je suis aller sur ce de la mauvaise façon. Toutes les suggestions sur comment je dois gérer cela?

  • Il fonctionne pour moi. Je fais exactement la même chose. Seulement que l'action pour la refreshControl a une propriété expéditeur. Quand je rentre de l'écran de l'actualisation de contrôle n'est pas visible, mais si je tire la vue de la table un peu en baisse, je peux voir la filature de rafraîchissement de contrôle.
InformationsquelleAutor Kyle | 2013-07-29