2010-08-31 16 views
0

J'ai créé une vue défilante et défini les boutons dans la vue déroulante. Les boutons défilent horizontalement. J'ai créé la vue de table en tant que subview pour le contrôleur de vue. En cliquant sur les boutons, les données sont affichées dans la vue de table à partir des flux RSS en utilisant l'analyse XML. SO changer les données dans la vue tableau qui dépend du clic sur le bouton. Quand j'ai changé pour sélectionner le bouton suivant, l'analyse sera démarrée et affichera les données. donc ça prend du temps. En attendant, je veux afficher ou désactiver la vue (ce qui signifie que, sur cette durée d'analyse, la vue est désactivée ou que l'utilisateur ne peut rien faire comme geler avec l'indicateur d'activité). En changeant chacun des boutons, l'action aura lieu. J'ai référé quelques tutoriels, mais je ne peux pas avoir une idée? Certaines personnes m'ont dit d'utiliser la méthode synchrone pour résoudre le problème. Mais je n'en ai aucune idée. S'il vous plaît guidez-moi et aidez-moi. Donne-moi quelques exemples d'applications et de liens.En cliquant sur le bouton pour changer la vue/Faut-il utiliser la méthode synchrone dans l'iPhone?

voir mon image ci-dessous,

Image

Merci à l'avance!

Cordialement,
Pugal

Répondre

1

Ne pas utiliser les appels réseau synchrone pour désactiver l'entrée d'utilisateur. Celui qui a suggéré cela vous a donné de très mauvais conseils.

Si vous voulez simplement désactiver l'entrée pour votre vue actuelle et ses sous-vues, vous pouvez faire self.view.userInteractionEnabled = NO; dans votre contrôleur de vue.

Si vous souhaitez désactiver l'entrée pour toute la fenêtre, vous pouvez faire self.view.window.userInteractionEnabled = NO;

Vous ne devez désactiver l'interaction de l'utilisateur du tout si vous superposez une vue plein écran sur le dessus de l'interface utilisateur. Selon votre image de maquette, je pense que c'est ce que vous essayez de faire. Pour ce faire, vous pouvez faire quelque chose comme ceci:

self.overlayView = [[[UIView alloc] initWithFrame:self.view.window.bounds] autorelease]; 
self.overlayView.backgroundColor = [UIColor blackColor]; 
self.overlayView.alpha = 0.5f; 
[self.view.window addSubview:self.overlayView]; 
self.activityIndicator = [[[UIActivityIndicator alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite] autorelease]; 
self.activityIndicator.center = self.view.window.center; 
[self.view.window addSubview:self.activityIndicator]; 
[self.activityIndicator startAnimating]; 
self.activityLabel = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease]; 
self.activityLabel.text = @"Loading..."; 
[self.activityLabel sizeToFit]; 
self.activityLabel.center = CGPointMake(self.activityIndicator.center.x, self.activityIndicator.center.y - self.activityIndicator.frame.size.height); 
[self.view.window addSubview:self.activityLabel]; 
+0

Merci pour votre réponse détaillée. Je veux exactement ça. Merci beaucoup. – Pugal