2010-12-02 3 views
1

Salut il J'ai rencontré une certaine confusion liée à cela; Je voudrais effectuer certaines actions seulement une fois que la vue est apparue, montrant probablement un indicateur d'activité pendant la collecte des données. J'ai écrit mon code dans viewWillAppear, mais il semble qu'il se déclenche avant que la vue n'apparaisse à l'écran. J'ai revérifié cela avec quelques déclarations NSLog, et j'ajouté un sommeil de 2 secondes dans viewWillAppear, les déclarations NSLog me faire virer, et la vue apparaît seulement après 2 secondes de retard - i on s'y attendait, le délai de 2 secondes est exécuté une fois que la vue vient sur l'écran?iphone; Faire des choses seulement une fois que la vue apparaît .. ViewWillAppear?

Est-ce que je fais quelque chose de mal? J'ai même essayé viewDidAppear, même chose. Aucune suggestion?

Merci

edit: Je voudrais donner un scénario clair de ce que je fais

1. i have a parent view, which has a scroll view - and a subview 
2. In the parent view, i create multiple instances of the subview and add them to the scrollview, creating scrollable views, which work. 
3. Each view is passed an argument and depending on the argument the view contents change - works as expected. 
4. I would like to show the subview and once its on the screen, do some internet opearations while i show an activity indicator, for this i need to use viewDidApper. 
5. I am manually firing the subview's viewDidAppear from the parent view, once i have created its instance 

Le problème est ici, la vue apparaît une seule fois toutes les opérations sont terminées.

Comment puis-je régler ce problème?

Répondre

5

viewWillAppear est censé se déclencher AVANT que la vue apparaît, d'où le mot Will dans le nom. Vous pourriez être intéressé par viewDidAppear.

+0

@Abizern - Nice montage mate! :) – willcodejavaforfood

+0

Salut Abizem, comme je l'ai mentionné dans ma question, j'ai essayé les deux - le même résultat! – Veeru

+0

- (vide) viewDidAppear: (BOOL) animé { [super viewDidAppear: animé]; \t [activityIndicator startAnimating]; \t \t [NSThread sleepForTimeInterval: 1]; \t [activityIndicator stopAnimating]; C'est mon code pour tester, la vue n'apparaît qu'après avoir tout terminé, j'ai même essayé viewDidAppear: animé après le sommeil aussi – Veeru

1

Je suppose que je figured it out - Plutôt que d'effectuer des opérations sur viewDidAppear, je l'ai utilisé performSelector, quelque chose comme ça

-(void) viewDidAppear:(BOOL)animated{ 
    [super viewDidAppear:animated]; 
    [self performSelector:@selector(loadXML:) withObject: self afterDelay:0]; 

} 

Merci les gars!

Questions connexes