2010-12-02 9 views
1

Hallo dort Ich geriet in etwas Verwirrung diesbezüglich; Ich möchte einige Aktionen nur ausführen, sobald die Ansicht angezeigt wird und wahrscheinlich einen Aktivitätsindikator während der Datenerfassung zeigt. Ich habe meinen Code in viewWillAppear geschrieben, aber er scheint zu brennen, bevor die Ansicht auf dem Bildschirm erscheint. Ich habe dies mit einigen NSLog-Anweisungen überprüft, und ich habe einen Schlaf von 2 Sekunden in ViewWillAppear hinzugefügt, die NSLog-Anweisungen werden ausgelöst, und die Ansicht erscheint erst nach 2 Sekunden Verzögerung - ich wurde erwartet, die 2 Sekunden Verzögerung wird einmal ausgeführt Aussicht kommt auf den Bildschirm?iphone; Dinge nur tun, wenn die Ansicht erscheint..ViewWillAppear?

Mache ich etwas falsch? Ich probierte sogar ViewDidAppear, die gleiche Sache. Irgendwelche Vorschläge?

Dank

edit: Ich möchte ein klares Szenario geben, was ich

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 

Das Problem ist hier tue, ist der Ansicht, alle erscheinen nur, wenn die Vorgänge abgeschlossen sind.

Wie kann ich das sortieren?

Antwort

5

viewWillAppear soll angeblich vor der Ansicht erscheint, daher das Wort Will im Namen. Das könnte Sie interessieren: viewDidAppear.

+0

@Abizern - Netter Schnitt Kumpel! :) – willcodejavaforfood

+0

Hallo Abizem, wie ich in meiner Frage erwähnt habe, habe ich beides versucht - das gleiche Ergebnis! – Veeru

+0

- (void) viewDidAppear: (BOOL) animiert { [super viewDidAppear: animiert]; \t [activityIndicator startAnimating]; \t \t [NSThread sleepForTimeInterval: 1]; \t [activityIndicator stopAnimating]; \t \t } Das ist mein Code zum Testen, die Ansicht erscheint erst nach der Fertigstellung alles, ich habe sogar versucht ViewDidAppear: animiert nach dem Schlaf auch – Veeru

1

Ich denke, ich es herausgefunden - Anstatt Operationen auf viewDidAppear Durchführung verwendet i perform, so etwas wie diese

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

} 

Danke Jungs!

Verwandte Themen