2011-05-11 1 views
1

J'ai un bouton et, lorsqu'il est pressé, il télécharge plusieurs images du web afin de les afficher dans une autre vue. Cependant, pour le moment, lorsque j'appuie sur le bouton, le bouton passe à l'état en surbrillance et semble rester coincé pendant le téléchargement des images (et essentiellement la vue suivante est préparée). Je ne suis pas fâché que le bouton soit bloqué en mode surligné (en fait je le préfère de cette façon). Cependant, ce que je voudrais, c'est qu'un UIActivityView soit affiché sur la vue où le bouton est affiché pendant le chargement de la vue suivante (et les images sont téléchargées depuis le web, car cela prend du temps) ... Comment Est-ce que j'irais sur la mise en œuvre logiquement?UIActivityIndicatorView, affichage pendant le téléchargement de l'image sur la vue actuelle

Merci,

Jack

+1

Comment téléchargez-vous les images? – kball

Répondre

0

Je suppose que vous utilisez NSURLConnection pour vous connecter et télécharger les images? Si c'est le cas, vous voudriez utiliser une approche comme celle-ci:

Dans IB, placez un UIActivityIndicatorView sur votre vue où vous le souhaitez et définissez son style dans son panneau Attributs. Dites-le à cacher quand arrêté. Et assurez-vous de le lier avec votre code dans le fichier d'en-tête du propriétaire.

UIActivityIndicatorView *indicator; 

et

@property (nonatomic, retain) IBOutlet UIActivityIndicatorView *indicator; 

Lorsque vous créez votre NSURLConnection et commencez la demande, dites l'indicateur pour commencer l'animation avec [indicator startAnimation];. Si vous ne voulez pas que votre bouton apparaisse à l'écran, vous pouvez le supprimer de la vue d'ensemble si vous le souhaitez. Une fois le téléchargement terminé, vous pouvez indiquer l'indicateur [indicator stopAnimation] (et ajouter votre bouton si vous l'avez supprimé plus tôt) dans votre méthode - (void)connectionDidFinishLoading:(NSURLConnection *)connection.

Si vous téléchargez les images sans utiliser NSURLConnection, cela sera bien entendu différent, mais logiquement, cela devrait être la même approche. Bien que je suis d'accord avec David que cela devrait probablement être fait sur un fil de fond

0

Vous faites un travail long dans le thread principal. Vous devriez changer votre code pour que le téléchargement se fasse dans un fil d'arrière-plan. Vous pouvez changer l'état du bouton pour indiquer que le téléchargement est en cours, mais ne bloquez pas le thread principal de cette façon. Dans le fil d'arrière-plan, chargez les images et appelez un sélecteur sur le fil principal qui met à jour UIActivtyView pour indiquer sa progression pendant le téléchargement d'autres images.

0

Pour votre problème de bouton attribuer la même image pour l'état mis en évidence que vous assignez pour la normale

UIImage *newImage12 = [UIImage imageNamed:@"yourimagename"]; 
[deleteButton setBackgroundImage:newImage12 forState:UIControlStateNormal]; 
[deleteButton setBackgroundImage:newImage12 forState:UIControlStateHighlighted]; 

Pour ajouter l'indicateur d'activité

dans .h fichier

IBOutlet UIActivityIndicatorView *indicator; 

font propriété

ajouter un indicateur dans votre xib et faire la connexion.

synthétiser et libérer.m fichier

sur votre cliquez sur le bouton où vous voulez montrer votre indicateur: -

[indicator startAnimating]; 

où vous voulez arrêter votre indicateur écrire

[indicator stopAnimating]; 
-1

Vous définiriez votre cadre d'indicateurs pour être là où vous en avez besoin; centre de l'UIButton.

Vous n'avez pas spécifié comment télécharger vos images, mais lorsque vous démarrez le téléchargement, utilisez [indicator startActivity]; et quand le téléchargement est terminé, utilisez [indicator stopActivity];

Vous pouvez également ajouter un setHidden:YES/setHidden:NO où vous ajoutez le début/Arrête les appels.

Questions connexes