UITableView Indicateur d'Activité de la Pomme façon

Mon problème est assez commun. J'en veux pour preuve certains "chargement" des trucs pendant que les données qui seront affichées dans une table est en cours de téléchargement. Mais toutes les solutions que j'ai vu jusqu'ici est d'ajouter certains filateurs de cellules, ou mettre de la semi-transparent sur le dessus de l'application.

Ce que je veux actif, c'est la chose qu'apple le fait dans ses applications (par exemple YouTube). Comme, la roue qui tourne avec le mot "Chargement" s'affiche sur le fond blanc, puis les données sont affichées.

J'ai vu aussi une solution avec un groupe de style, mais ma table a un simple style de sorte qu'il n'est pas de m'aider à me beaucoup je pense.

MODIFIER

Mon code ressemble à ceci:

- (void)loadImagesData
{
    UIView *tableView = self.view;
    self.view = [[LoadingView alloc] initWithFrame:CGRectMake(0, 0, 320, 367)];
    dispatch_queue_t downloadQueue = dispatch_queue_create("flickr downloader", NULL);
    dispatch_async(downloadQueue, ^{
        NSArray *images = [FlickrFetcher photosInPlace:self.place maxResults:MAX_PHOTOS];
        dispatch_async(dispatch_get_main_queue(), ^{
            self.view=tableView;
            self.imagesData = images;
        });
    });
    dispatch_release(downloadQueue);
}

et données images setter appels reloadData sur la vue de la table.

Le problème, c'est que vous êtes en paramètre un pointeur vers votre tableview (il doit aussi être UITableview *tableview...) et ensuite de changer d'auto.vue d'un autre point de vue. Cela signifie que désormais votre tableview ivar points à votre nouvelle vue à la place de l'ancien. J'espère qu'il est clair...
Je ne comprends pas :(. Je l'ai regardé comme: j'ai créé un pointeur vers un point de vue afin de ne pas être libéré par l'ARC, et puis j'ai mis un self.view revenir. Vous pouvez poster ce que devrait être la bonne façon, donc je vais le regarder et à comprendre?
Ok essayez ceci: Supprimer la ligne: UIView *tableView = self.view; Ajouter les éléments suivants: UIView *theView = self.view; [theView addSubView:[[LoadingView alloc] initWithFrame:CGRectMake(0, 0, 320, 367)]]; à l'Intérieur de votre thread principal bloc: Remplacer: self.view=tableView; avec: [[theView.subviews lastObject] removeFromSuperview]; ce que nous avons fait a été d'ajouter votre chargement au-dessus de la table et une fois que nous sommes prêts à nous retirer pour révéler la table. Si cela ne fonctionne pas, faites le moi savoir.
Quelle est exactement la classe LoadingView dans votre code final? Je sais que c'est une vieille question, mais maintenant, en 2015, pouvez-vous me dire si c'est une bonne approche? Je veux faire de cette façon (sauf le tableView dans une variable, etc)
salut @sport. C'était vraiment il y a longtemps et depuis je n'ai pas programmé pour iOS. Mais ici, c'est un repo avec mon implémentation: github.com/Uko/UILoadingView, peut-être que ça vous aidera à comprendre ce que j'ai fait

OriginalL'auteur Uko | 2012-03-20